“为 Apache Hadoop 2.7 及更高版本预构建”是什么意思?

Kan*_*nan 7 apache-spark

Apache Spark 的下载页面上的“为 Apache Hadoop 2.7 及更高版本预构建”是什么意思?

这是否意味着 Spark 中 HDFS 的必要库?如果是这样,Cassandra、s3、HBase、SQL 数据库、NoSQL 数据库等其他存储系统怎么样?我们是否需要下载任何库以连接到其他存储系统。

Jac*_*ski 8

这是否意味着 Spark 中 HDFS 的必要库

正确的!Spark 使用 Hadoop FileSystem API 来访问文件(在 HDFS 和 S3 以及其他支持 HDFS 的文件系统上),并且“为 Apache Hadoop 2.7 及更高版本预构建”版本附带了必要的库。

这主要是为了 Spark Core 的 RDD 访问带有数据的文件。

Cassandra、s3、HBase、SQL 数据库、NoSQL 数据库等其他存储系统怎么样?我们是否需要下载任何库以连接到其他存储系统。

在提到的存储系统中,S3 部分包含在“为 Apache Hadoop 2.7 及更高版本预构建”包中(但您必须专门为 S3 添加额外的 jar)。

这主要是针对 Spark SQL 的数据集 API。

Cassandra、HBase 等都有自己的 Spark 连接器,不包括在内。请参阅DataStax Spark Cassandra 连接器Apache HBase 连接器


如果您一直想知道“如果我必须在 YARN 上运行 spark 使用哪种包类型”,只需使用“Pre-built for Apache Hadoop”和 Hadoop 版本(“2.7”与“3.2 及更高版本”)作为版本正在使用的 Hadoop(可能是 Hadoop YARN 的版本)。


所以“spark-prebuilt-with-hadoop-xy”意味着Spark在jars目录中包含Hadoop xy。这显然使分布比“spark-without-hadoop”更大。这也意味着,一旦您将 HDFS 升级到 Hadoop 3.2,但 Spark 发行版是“使用 Hadoop 2.7”,您仍然可以使用它,但不会简单地支持某些功能,并且您的应用程序可以不那么优化(由 HDFS 本​​身)而不是提到所有修复的错误(和新引入的)。


spark-prebuilt-with-hadoop-xy 中的 hadoop jar 和 hadoop-xy 中的那些 jar 之间不会有冲突吗?spark-prebuilt-with-hadoop-xy 给我的印象是所有必要的 hadoop 东西(例如 YARN)都将出现在 spark 二进制文件中。因此我的困惑是所有的 hadoop 都应该出现在伞 spark-prebuilt-with-hadoop-xy 中

如果您考虑 Spark 应用程序和 Hadoop DFS 或 Hadoop YARN 之间的底层通信,则并非如此。它位于各自容器(可能在 Docker 中)中的不同应用程序之间,因此它们的 CLASSPATH 是分开的。

唯一的问题可能是 Hadoop 组件和 Spark 的协议不匹配,这就是为什么您应该尽可能与 jar 兼容并使用最接近您的 Hadoop 环境版本的 Spark 包。