【问题标题】:Where is Spark copying jars on worker nodes?Spark 在工作节点上复制 jar 的位置在哪里?
【发布时间】:2021-09-15 12:02:34
【问题描述】:

我的 Spark 代码中有一些 3rd 方 jar,使用 maven 捆绑并提交。

  1. 想知道,每当我们提交 Spark 作业时,它会将工作节点中所有必需的 3rd 方 jar 复制到哪里?

  2. 我们是否可以配置该路径,以便 spark 只能在工作节点中复制 jar?如果是,那么在哪里可以配置?

  3. 我曾经在我的 Spark 代码中使用的 3rd 方 jar 发生了变化,并且没有更改 jar 版本。因此,在使用具有相同版本名称(1.1.1) 的新 jar 运行时,它仍然在选择旧 jar(1.1.1)。任何建议,可以做什么?

【问题讨论】:

  • 您可以在 spark-submit 命令期间使用 --jars 选项传递 jars
  • @Vish,这不是我的问题,想知道它在哪里被复制,可以配置吗?

标签: java apache-spark


【解决方案1】:

查看https://spark.apache.org/docs/latest/submitting-applications.html#advanced-dependency-management 上的 spark 官方文档,似乎由 --jars 选项提供的 jars 被复制到执行器的本地工作目录,这意味着它被复制到磁盘上的本地临时路径,您的资源管理器,例如 yarn 可以访问。我强烈建议不要修改此路径,因为它会产生一堆复杂性。再次查看上面的链接,有一个属性spark.worker.cleanup.appDataTtl,如果您不使用像 yarn/mesos(已经有自己的清理机制)这样的资源管理器,可以使用它来触发自动清理。

查看您的问题,您似乎正在为您的 spark 应用程序制作一个 uber/fat jar,其中您的 3rd 方 jar 似乎是由 maven 管理的依赖项,并被复制到 uber/fat jar 中。鉴于第 3 方尚未对其 jar 版本进行更新,您的 maven 似乎正在使用旧 jar。为此,您可以清除本地 maven 存储库(位于本地系统上的 $home.dir/.m2 目录中。请不要从此处手动删除文件,而是使用 maven 中的 purge 选项/命令来执行此操作。命令是 @987654326 @

有关清除的文档,请参阅http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    相关资源
    最近更新 更多