【问题标题】:What does "pre-built for Apache Hadoop 2.7 and later" mean?“为 Apache Hadoop 2.7 及更高版本预构建”是什么意思?
【发布时间】:2021-04-16 16:02:17
【问题描述】:

Apache Spark 下载页面上的“pre-built for Apache Hadoop 2.7 and later”是什么意思?

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

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

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

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

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

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

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

    这主要用于 Spark SQL 的数据集 API。

    Cassandra、HBase 等都有自己的 Spark 连接器,不包括在内。见DataStax Spark Cassandra ConnectorApache HBase Connector


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


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


    spark-prebuilt-with-hadoop-x.y 中的 hadoop jar 和 hadoop-x.y 中的 hadoop jar 之间不会有冲突吗? spark-prebuilt-with-hadoop-x.y 给我的印象是所有必要的 hadoop 东西(例如,YARN)都将存在于 spark 二进制文件中。因此,我感到困惑的是,所有 hadoop 都应该存在于 spark-prebuilt-with-hadoop-x.y 中。

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

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

    【讨论】:

    • 你是个传奇!非常感谢您的时间和耐心。我的疑惑终于解开了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    • 2019-08-05
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    相关资源
    最近更新 更多