【问题标题】:Do we still have to make a fat jar for submitting jobs in Spark 2.0.0?在 Spark 2.0.0 中我们还需要制作一个胖罐子来提交作业吗?
【发布时间】:2016-08-11 03:45:08
【问题描述】:

在 Spark 2.0.0 的发行版 note 中,它说:

Spark 2.0 不再需要胖组装 jar 来进行生产部署。

  • 这是否意味着我们不再需要制作一个胖罐子来提交作业?

  • 如果是,如何?因此文档here 不是最新的。

【问题讨论】:

    标签: apache-spark jar uberjar


    【解决方案1】:

    这是否意味着我们不再需要为 提交作业?

    很遗憾,没有。您仍然需要为 Sparks 部署创建一个 uber JAR。

    发行说明中的​​标题非常具有误导性。实际的意思是,Spark 本身作为一个依赖不再被编译成一个 uber JAR,而是像一个普通的应用 JAR 一样有依赖。您可以更详细地看到这一点@SPARK-11157,它被称为“允许在没有程序集的情况下构建 Spark”,并阅读名为 "Replacing the Spark Assembly with good old jars" 的论文,它描述了部署 Spark 而不是几个巨大的 JAR(核心、流、SQL 等),但作为几个相对常规大小的 JAR,其中包含代码和包含所有相关依赖项的 lib/ 目录。

    如果你真的想要细节,this pull request 涉及几个关键部分。

    【讨论】:

    • 我把你的回答读了 10 遍。我还阅读了您提供的链接。你能清楚地说明我必须创建胖罐的原因吗?如果我不这样做,只为所有 spark 依赖项指定提供的范围有什么潜在问题?
    • @MaxNevermind 如果您不这样做,并且只发布您的编译代码,谁将提供第三方依赖项?在运行时,您的应用会以ClassNotFoundException 爆炸。
    • 我问错了问题。如果我制作了一个胖 jar,但为所有 spark 依赖项指定了一个提供的范围,因为它们是由环境提供的呢?因此,我的应用程序使用但 Spark 不使用的第三方依赖项将被打包在一个胖 jar 中。
    • 或者我对整个情况的理解不正确。是否需要将 Spark 打包为 fat jar 中的依赖项?这是一个我真正想找到答案的问题。
    猜你喜欢
    • 1970-01-01
    • 2017-05-20
    • 2017-04-17
    • 2016-12-29
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 2021-08-10
    相关资源
    最近更新 更多