【问题标题】:Apache Spark 2.0.1 and Spring IntegrationApache Spark 2.0.1 和 Spring 集成
【发布时间】:2016-10-09 03:26:00
【问题描述】:

所以,我想按照 spring (http://docs.spring.io/spring-hadoop/docs/current/reference/html/springandhadoop-spark.html) 提供的本指南在我的 spring 应用程序中创建一个 apache spark 集成。现在我有几个问题,因为 sparks 2.0.1 似乎不包括 spark-assembly jar。

由于集成似乎依赖于 jar,我有哪些选择?

如果我能找到旧的 jar,我可以将它与 apache 2.0.1 一起使用吗?

有没有办法用 apache 2.0.1 获取 jar?

【问题讨论】:

    标签: spring apache-spark


    【解决方案1】:

    是的,你是对的 - spark 2.0.1 不包含 uber jar 本身,如 1.6.x 及更低版本(例如。spark-1.6.2-bin-hadoop2.6\lib\spark-assembly- 1.6.2-hadoop2.6.0.jar)

    Spark 2.0.0+ spark-release-2-0-0.html 不需要胖组装 uber jar。但是,当您比较 spark-assembly-1.6.2-hadoop2.6.0 的内容和 spark-2.0.0-bin-hadoop2.7\jars\ 中的 libs(jar 文件的内容)时,您可以看到几乎相同的内容以及相同的类、包等。

    如果我能找到旧的 jar,我可以将它与 apache 2.0.1 一起使用吗? 个人不这么认为。向后兼容性可能存在一些潜在问题,并且在latest 版本中删除了某些内容很奇怪。

    SparkYarnTasklet 需要汇编 jar 是对的,因为有一些 postPropertiesSet 验证:

        @Override
        public void afterPropertiesSet() throws Exception {
            Assert.hasText(sparkAssemblyJar, "sparkAssemblyJar property was not set. " +
                    "You must specify the path for the spark-assembly jar file. " +
                    "It can either be a local file or stored in HDFS using an 'hdfs://' prefix.");
    

    但是,这个sparkAssemblyJar只用在sparkConf.set("spark.yarn.jar", sparkAssemblyJar);

    • 当您将使用SparkYarnTasklet 时,程序可能会验证失败(您可以尝试扩展SparkYarnTasklet 并覆盖afterPropertiesSet 而不进行验证)

    还有documentation about "spark.yarn.jar:"

    要使 Spark 运行时 jar 可以从 YARN 端访问,您可以指定 spark.yarn.archive 或 spark.yarn.jars。详情请参考 火花属性。如果 spark.yarn.archive 和 spark.yarn.jars 都不是 指定,Spark 将创建一个包含所有 jar 的 zip 文件 $SPARK_HOME/jars 并将其上传到分布式缓存。

    所以看看属性:spark.yarn.jarsspark.yarn.archive。 所以比较一下 1.6.x- 和 2.0.0+ 中的 spark.yarn.jar 是什么

    • spark.yarn.jar 在 1.6.2 中:

    Spark jar 文件的位置,以防需要覆盖默认位置。默认情况下,YARN 上的 Spark 将使用本地安装的 Spark jar,但 Spark jar 也可以位于 HDFS 上的世界可读位置。这允许 YARN 将其缓存在节点上,这样就不需要在每次应用程序运行时分发它。例如,要指向 HDFS 上的 jar,将此配置设置为 hdfs:///some/path。

    • 2.0.1 中的 spark.yarn.jar:

    包含 Spark 代码的库列表 分发到 YARN 容器。默认情况下,YARN 上的 Spark 将使用已安装的 Spark jars 在本地,但 Spark jar 也可以在世界可读的位置 在 HDFS 上。这允许 YARN 将其缓存在节点上,因此它不需要 每次应用程序运行时分发。指向罐子 例如 HDFS,将此配置设置为 hdfs:///some/path。球体 是允许的。

    但这似乎将所有罐子一一设置。

    但在 2.0.0+ 中,spark.yarn.archive 替换了 spark.yarn.jars,并提供了一种如何避免逐个传递 jar 的方法 - 使用根“dir”中的所有 jar 创建存档。

    我认为spring-hadoop 将在几周内反映 2.0.0+ 的变化,但对于“快速修复”,我可能会尝试覆盖 SparkYarnTasklet 并反映 2.0.1 的变化 - 正如我所看到的 @987654324 @ 和 afterPropertiesSet 方法。

    【讨论】:

    • 哇,谢谢,这是一些非常好的建议,谢谢。我已经退后一步,现在使用 spark 1.5.0,因为时间不在我这边,但我想尽快升级到 2.0.0+,这些信息将有很大帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    • 2012-06-18
    • 1970-01-01
    • 2016-05-30
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多