需求

编辑

在运行 elasticsearch-hadoop 之前,请务必检查以下需求。在集群中部署 elasticsearch-hadoop 时,这一点尤其重要,因为某些机器上的软件版本可能略有不同。虽然 elasticsearch-hadoop 会尽力回退并对其环境进行各种验证,但在升级过程中进行快速一致性检查可以节省您大量麻烦。

检查某个构件的版本时,请确保验证集群中的所有节点。

elasticsearch-hadoop 不会对 Hadoop(或其上构建的各种库,例如 Hive)或 Elasticsearch 添加额外的需求,但是,根据经验,请使用所述库的最新稳定版本(在适用的情况下,检查与 Hadoop 和 JDK 的兼容性)。

JDK 8 级(至少 u20 或更高版本)。Elasticsearch 的最新支持矩阵可在此处获得。请注意,JVM 版本对于稳定的环境至关重要,因为不正确的版本可能会损坏底层数据,如这篇博文所述。

可以从命令行检查可用的 JDK 版本

$ java -version
java version "1.8.0_45"

Elasticsearch

编辑

我们强烈建议使用最新的 Elasticsearch(当前版本为 8.16.0)。虽然 elasticsearch-hadoop 保持与早期版本的 Elasticsearch 向后兼容,但我们强烈建议使用最新、稳定的 Elasticsearch 版本。您可以在此处找到受支持版本的矩阵。

Elasticsearch 版本显示在其文件夹名称中

$ ls
elasticsearch-8.16.0

如果 Elasticsearch 正在运行(本地或远程),可以通过 REST 获取其版本

$ curl -XGET https://127.0.0.1:9200
{
  "status" : 200,
  "name" : "Dazzler",
  "version" : {
    "number" : "8.16.0",
    ...
  },
  "tagline" : "You Know, for Search"
}

Hadoop

编辑

elasticsearch-hadoop 与 Hadoop 2 和 Hadoop 3 兼容(理想情况下为最新稳定版本)。它每天都会针对 Apache Hadoop 进行测试,但任何与 Apache Hadoop 兼容的发行版都应该可以正常工作。

要检查 Hadoop 的版本,可以参考其文件夹或 jar 包(其名称中包含版本)或从命令行进行。

$ bin/hadoop version
Hadoop 3.3.1

Apache Hive

编辑

Apache Hive 0.10 或更高版本。我们建议使用最新版本的 Hive(当前版本为 2.3.8)。

可以从其文件夹名称或命令行中查找 Hive 版本。

$ bin/hive --version
Hive version 2.3.8

Apache Spark

编辑

Spark 2.0 或更高版本。我们建议使用最新版本的 Spark(当前版本为 3.2.0)。由于 elasticsearch-hadoop 提供了与 Apache Spark 的原生集成(推荐),因此使用的二进制文件无关紧要。使用 Hadoop 层集成这两者时也适用,因为 elasticsearch-hadoop 支持大多数 Hadoop 发行版。

通常可以通过查看其文件夹名称来发现 Spark 版本

$ pwd
/libs/spark/spark-3.2.0-bin-XXXXX

或通过运行其 shell。

$ bin/spark-shell
...
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.2.0
      /_/
...

Apache Spark SQL

编辑

如果计划使用 Spark SQL,请确保添加适当的 Spark SQL jar 作为依赖项。虽然它是 Spark 发行版的一部分,但它不是 Spark 核心 jar 的一部分,而是有其自己的 jar。因此,在构建类路径时,请确保包含spark-sql-<scala-version>.jar或 Spark *assembly*:spark-assembly-3.2.0-<distro>.jar

elasticsearch-hadoop 支持 Spark SQL 2.x 和 Spark SQL 3.x。elasticsearch-hadoop 通过其主 jar 支持 Scala 2.11 上的 Spark SQL 2.x。由于 Spark 2.x 和 3.x 彼此不兼容,并且 Scala 版本也不兼容,因此 elasticsearch-hadoop 提供了多个不同的构件。选择适合您的 Spark 和 Scala 版本的 jar。有关更多信息,请参见 Spark 章节。