【问题标题】:Submit spark application in a Jar file separate from uber Jar containing all dependencies在包含所有依赖项的 uber Jar 之外的 Jar 文件中提交 spark 应用程序
【发布时间】:2016-09-19 21:22:05
【问题描述】:

我正在构建具有多个严重依赖项的 Spark 应用程序(例如,具有语言模型的斯坦福 NLP),因此包含具有依赖项的应用程序代码的 uber Jar 需要大约 500MB。将这个胖 Jar 上传到我的测试集群需要很长时间,我决定将我的应用程序和依赖项构建到单独的 Jar 文件中。

我在父 pom.xml 中创建了两个模块,并分别使用 mvn packagemvn assembly:asembly 构建应用程序和 uber jar。

但是,在我将这些单独的 jar 上传到我的 YARN 集群应用程序后,应用程序失败并出现以下错误:

线程“主”java.lang.NoSuchMethodError 中的异常: org.apache.hadoop.net.unix.DomainSocketWatcher.(I)V 在 org.apache.hadoop.hdfs.shortcircuit.DfsClientShmManager.(DfsClientShmManager.java:415) 在 org.apache.hadoop.hdfs.shortcircuit.ShortCircuitCache.(ShortCircuitCache.java:379) 在 org.apache.hadoop.hdfs.ClientContext.(ClientContext.java:100) 在 org.apache.hadoop.hdfs.ClientContext.get(ClientContext.java:151) 在 org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:690) 在 org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:601) 在 org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:148) 在 org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2653) 在 org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:92)

在 Spark 上运行应用程序时,它也会失败并出现类似的错误。

具有依赖关系的 Jar 包含在 Yarn 类路径中:

<property>
    <name>yarn.application.classpath</name>
    <value>
      $HADOOP_CONF_DIR,
      $HADOOP_COMMON_HOME/*,
      $HADOOP_COMMON_HOME/lib/*,
      $HADOOP_HDFS_HOME/*,
      $HADOOP_HDFS_HOME/lib/*,
      $HADOOP_MAPRED_HOME/*,
      $HADOOP_MAPRED_HOME/lib/*,
      $YARN_HOME/*,
      $YARN_HOME/lib/*,
      /usr/local/myApp/org.myCompany.myApp-dependencies.jar
    </value>
  </property>

真的有可能以这种方式运行 Spark 应用程序吗?或者我必须将 YARN(或 Spark)类路径上的所有依赖项作为单独的 Jar 文件?

【问题讨论】:

  • 所有工作节点都可以使用这些依赖项吗?
  • 是的,他们是。 org.myCompany.myApp-dependencies.jar 上传到所有工作节点并添加到 YARN 类路径中。

标签: maven hadoop apache-spark jar uberjar


【解决方案1】:

我的 spark 作业遇到了同样的问题。这肯定是一个依赖问题。您必须确保在运行时选择正确的版本。最好的方法是将正确版本的 hadoop-common-2.6.jar 添加到我的应用程序 jar 中。我还在应用程序 jar 中升级了我的 hadoop-hdfs 版本。这解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 2017-01-01
    • 2011-10-01
    相关资源
    最近更新 更多