附录 C:重大更改

编辑

为清晰起见,我们始终在每个版本的发行说明开头列出任何重大更改。

8.9 中的重大更改

编辑

8.9 中删除的支持技术

编辑

elasticsearch-hadoop 8.9 中已删除对以下不太流行的技术的支持。

  • Spark 1.x(仍支持 Spark 2.x 和 3.x)
  • Spark 2.x 的 Scala 2.10 支持(仍支持 Scala 2.11 和更高版本)
  • Apache Pig
  • Apache Storm

8.0 中的重大更改

编辑

默认滚动大小现在为 1000

编辑

我们将 es.scroll.size 的默认值从 50 增加到 1000。如果您在低内存环境中部署 ES-hadoop,请考虑降低 es.scroll.size 以避免问题。

8.0 中的弃用功能

编辑

elasticsearch-hadoop 8.0 中已弃用以下功能,并将在未来的版本中删除。虽然这不会对您的应用程序产生直接影响,但我们强烈建议您在升级到 8.0 后采取所述步骤来更新您的代码。

Spark 1.x 支持已弃用

编辑

Spark 1.x 已经不再维护。Spark 2 和 Spark 3 仍然受支持。

Spark 2.x 的 Scala 2.10 支持已弃用

编辑

Spark 在 Spark 2.0.0 版本中弃用了对 Scala 2.10 的支持,并在 2.3.0 版本中将其删除。Spark 2.x 支持 Scala 2.11 和 2.12。

Hadoop 1.x 支持已弃用

编辑

Hadoop 1.x 已经不再维护。自 elasticsearch-hadoop 6.0 以来,尚未对其支持进行测试。现在正式弃用其支持。支持 Hadoop 2 和 Hadoop 3。

Apache Pig 支持已弃用

编辑

Apache Pig 已经不再维护。

Apache Storm 支持已弃用

编辑

Apache Storm 并非流行的 Elasticsearch 集成。

7.0 中的重大更改

编辑

已移除 Cascading 集成

编辑

我们支持的每个集成都会在 ES-Hadoop 中添加新功能时产生测试和维护成本。在过去几年中,我们看到 Cascading 集成的使用统计数据下降。这些包括下载数量、社区帖子和未解决的问题。此外,ES-Hadoop 仅支持 Cascading 2 系列。Cascading 已经进入 3.X 系列,我们没有看到太多兴趣或压力来使用任何较新的版本。由于这些因素,Cascading 在 6.6 版本中已被弃用,并在 7.0.0 版本中被删除。

现在需要 Java 8 或更高版本

编辑

ES-Hadoop 7.0.0 及更高版本需要最低 Java 版本 1.8 或更高版本。该库将不再针对 Java 1.6 或 Java 1.7 编译。

配置更改

编辑

es.input.use.sliced.partitions 已被删除。

6.0 中的重大更改

编辑

本节讨论如果您将 ES-Hadoop 从 5.x 版本升级到 6.x 版本,则应注意的更改。

配置更改

编辑

es.input.use.sliced.partitions 在 6.5.0 中已弃用,将在 7.0.0 中删除。es.input.max.docs.per.partition 的默认值 (100000) 也将在 7.0.0 中删除,从而默认禁用分片滚动,并将其切换为显式选择加入功能。

es.update.script 已被弃用,取而代之的是新的 es.update.script.inline 选项。es.update.script 配置将继续作为旧版配置发挥作用,其含义与 es.update.script.inline 相同。

索引和类型名称中的模式格式

编辑

6.0 中即将推出的是删除每个索引的多个类型。所有项目测试都尽可能迁移到使用单一类型。此迁移揭示了 Pig 和 Cascading 在这些框架如何与提供的索引/类型名称交互方面存在的问题。在设置过程中,Pig 和 Cascading 尝试将这些索引名称解析为路径,当索引中包含格式化模式(例如 index-{event:yyyy.MM.dd}/type)时,路径解析会中断。将来,分隔字段名称与格式的冒号字符 : 将更改为管道字符 |。新的模式索引名称示例为 index-{event|yyyy.MM.dd}/type。5.x 将支持两种分隔符,但在遇到冒号 : 时会记录弃用消息。

TTL 和时间戳元字段

编辑

Elasticsearch 6.0 正在删除在文档索引和更新请求中允许使用的 TTL 和时间戳元字段。因此,我们将删除在 6.0 中指定它们的能力,并在 5.x 中弃用其使用。

Hadoop 1.x 支持

编辑

从 6.0.0 开始,我们将不再在 Hadoop 1.x 版本上进行测试。这些版本已被认为是生命周期结束已有一段时间了。虽然连接器可能会继续适用于这些版本,但我们不再正式支持它们。请自行承担使用这些版本的风险!

YARN 集成已停止

编辑

由于 YARN 在支持长时间运行的进程方面存在限制,我们已决定停止开发并在 ES-Hadoop 中停止 YARN 集成。感谢社区参与测试版。如果您对此有任何疑问或疑虑,请随时在我们的论坛上进行讨论。

默认支持的 Scala 版本现在为 2.11

编辑

在 6.0.0 中,我们的 ES-Hadoop jar 将默认附带针对 Scala 2.11 编译的 Spark。我们将继续在兼容性构件中支持 Scala 2.10,但主要项目构件将默认以 Scala 2.11 为目标。

5.0 中的重大更改

编辑

本节讨论如果您将 ES-Hadoop 从 2.x 版本升级到 5.x 版本,则应注意的更改。

支持的 Hadoop 版本

编辑

ES-Hadoop 5.0 已添加对 Hadoop 生态系统中新软件版本的支持。出于稳定性目的,并且为了允许清理旧代码,通常会在这些周期中删除对旧版本的支持。请注意 5.0 中的以下版本兼容性更改

  • 已删除对 Hive 0.13 和 0.14 的支持。已知这些版本的 Hive 存在严重问题,这些问题已在 1.0 中修复。Hive 1.0 已经发布了一段时间,大多数发行版已经切换到它。ES-Hadoop 5.0 将继续支持 Hive 1.0。
  • 随着对 Storm 1.x 支持的添加,由于向后兼容性问题,对 Storm 0.9 的支持已被删除。
  • 已删除对 SparkSQL 1.0-1.2 的支持。SparkSQL 最初在 Spark 1.0-1.2 中作为 alpha 版本发布,但在 Spark 1.3 中已变得稳定,并具有大幅更改的 API。此外,我们还增加了对 Spark 2.0 的支持,它与以前的 Spark 版本不兼容。我们决定不同时支持三个不同的 Spark 版本兼容性,而是删除对 Spark SQL 1.0-1.2 的支持。

ES-Hadoop 中包含的 Spark jar 的名称

编辑

随着对 Spark 1.0-1.2 支持的删除以及对 Spark 2.0 支持的添加,ES-Hadoop 5.0 中包含的所有 Spark 工件的名称都已更改。此版本中的所有 Spark 工件现在都在其名称中明确标明了其 Spark 和 Scala 版本(而不是仅 Scala 和 *有时* Spark)。

表 1:从 2.x 到 5.x 的 Spark jar 名称更改

Spark 版本 Scala 版本 ES-Hadoop 2.x 名称 ES-Hadoop 5.x 名称

1.0 - 1.2

2.10

elasticsearch-spark-1.2_2.10-2.4.0.jar

<已删除>

1.0 - 1.2

2.11

elasticsearch-spark-1.2_2.11-2.4.0.jar

<已删除>

1.3 - 1.6

2.10

elasticsearch-spark_2.10-2.4.0.jar

elasticsearch-spark-13_2.10-5.0.0.jar

1.3 - 1.6

2.11

elasticsearch-spark_2.11-2.4.0.jar

elasticsearch-spark-13_2.11-5.0.0.jar

2.0+

2.10

<N/A>

elasticsearch-spark-20_2.10-5.0.0.jar

2.0+

2.11

<N/A>

elasticsearch-spark-20_2.11-5.0.0.jar

HDFS 存储库

编辑

在 5.0 中,HDFS 存储库插件几乎已从头开始重建,以允许与 Elasticsearch 插件框架中的安全策略更改兼容。

代码已移动

编辑

在 5.0 中,存储库 HDFS 插件已移动主 Elasticsearch 项目。elasticsearch-hadoop 存储库中的文档页面已更新,其中包含指示此移动的标题。

安全

编辑

不再需要在 Elasticsearch 中禁用 Java SecurityManager 才能使 HDFS 存储库插件正常运行。Elasticsearch 5.0 要求所有插件都能与已配置的 SecurityManager 正确运行。该插件已进行了大量修改,以允许与这个新的约束兼容。这应该允许您在仍然使用 HDFS 作为存储快照的位置的同时,维护安全的 Elasticsearch 实例。

配置更改

编辑

由于底层安全系统中的约束以及插件功能方式的更改,以下配置已在 5.0 中删除,且没有替代选项

  • concurrent_streams
  • user_keytab
  • user_principal
  • user_principal_hostname

支持的版本

编辑

以前,HDFS 存储库通过两个发行版同时支持 Apache Hadoop 1.x(默认)和 Apache Hadoop 2.x。在 5.0 中,现在只有一个发行版是针对最新的 Apache Hadoop 2.x(此时为 2.7.1)构建的。Apache Hadoop 1.x 的发行版已被删除。

已删除 light 版本

编辑

即使 Hadoop 已经安装在 Elasticsearch 节点上,出于安全原因,也需要将所需的库放在插件文件夹下。因此,5.0 中不再提供包含无 Hadoop 客户端依赖项的存储库插件的 light 发行版。

严格查询解析

编辑

在之前的版本中,用户可以指定修改客户端提供的Query DSL字符串中搜索属性的选项。在某些情况下,这些属性会与框架在读取操作期间执行搜索的方式冲突。在5.0版本中,当指定Query DSL字符串时,如果存在query字段,则提取其内容并丢弃所有其他内容(例如sourcesize)。如果不存在query字段,则在执行期间将整个文本嵌套到query字段中。