【问题标题】:Oozie SparkAction failingOozie SparkAction 失败
【发布时间】:2016-04-24 15:02:29
【问题描述】:

在 HDP 2.3.4 上,我正在尝试测试 Oozie 的 SparkAction。

我编写的 Spark (1.5.2) 应用程序很简单,仅用于测试 Oozie (4.2.0):

val tbl = sqlContext.sql("SELECT * FROM tbl")
val count = tbl.count   
log.info(s"The table has ${count} records.")

此应用程序在使用 spark-submit 时工作,在 YARN-Client 和 YARN-Cluster 模式下均有效。

我的job.propertiesworkflow.xml文件如下:

job.properties

nameNode=hdfs://myhost.com:8020
jobTracker=myhost.com:8032
queueName=default
projectRoot=user/${user.name}/workflows/sparkaction-test

master=yarn-cluster
mode=cluster
class=com.myCompany.SparkActionTest
hiveSite=hive-site.xml
jars=${nameNode}/${projectRoot}/lib/sparkaction-test_2.10-1.0.jar


oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/${projectRoot}
spark.yarn.historyServer.address=http://myhost.com:18080/
spark.eventLog.dir=${nameNode}/user/spark/applicationHistory
spark.eventLog.enabled=true

workflow.xml

<workflow-app name="spark-test-wf" xmlns="uri:oozie:workflow:0.4">
    <start to="spark-test"/>
    <action name="spark-test">
        <spark xmlns="uri:oozie:spark-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.compress.map.output</name>
                    <value>true</value>
                </property>
            </configuration>
            <master>${master}</master>
            <mode>${mode}</mode>
            <name>Testing Spark Action</name>
            <class>${class}</class>
        <jar>${jars}</jar>
            <spark-opts>--files ${hiveSite}</spark-opts>
         </spark>
        <ok to="end"/>
        <error to="errorcleanup" />
    </action>

    <kill name="errorcleanup">
      <message>Spark Test WF failed. [${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name ="end"/>
</workflow-app>

我清理了 Spark 的 Oozie 共享库(将它们移到了不同​​的目录中),只留下了以下 jar:

datanucleus-api-jdo-3.2.6.jar
datanucleus-core-3.2.10.jar
datanucleus-rdbms-3.2.9.jar
oozie-sharelib-spark-4.2.0.2.3.4.0-3485.jar
spark-1.5.2.2.3.4.0-3485-yarn-shuffle.jar
spark-assembly-1.5.2.2.3.4.0-3485-hadoop2.7.1.2.3.4.0-3485.jar
spark-examples-1.5.2.2.3.4.0-3485-hadoop2.7.1.2.3.4.0-3485.jar

很遗憾,Oozie 工作流程失败并显示以下错误消息:

工作流在运行状态约20分钟后被杀死,错误信息如下:Call From host.xxx.com/xxxx to 0.0.0.0:8032 failed on connection exception: java.net .ConnectException:连接被拒绝;更多详情见:http://wiki.apache.org/hadoop/ConnectionRefused

我可以 ping 0.0.0.0 但不能 telnet 端口 8032。

【问题讨论】:

  • 能否请您列出用于 SPARK 在 HDFS、Share-lib 位置的罐子。在 Share lib 中添加 spark-assembly-1.4.1-hadoopx.x.x 可能会出现问题。
  • @karthik 我将 spark 库中的所有 jar 复制到 Oozie Sharelib 中。但是,我们的 HDP 已损坏,需要重新格式化,因此我正在开发更新版本的 HDP (2.3.4)。我以前不再遇到这些问题,但现在出现了不同的错误。请看我上面的更新。
  • 在那个 jobTracker 中你指定端口为 8050 是在监听 resourcemanager 吗?对于另一方面的解决方案,问题可能是升级 sharelib 包似乎是版本不匹配。默认情况下,oozie 将执行“SPARK-SUBMIT”。或上述样品所需的 Tachyon jar。
  • @karthik 是的,我定义的 jobTracker 与 yarn-site.xml 中的 yarn.resourcemanager.address 匹配,所以我不太确定为什么日志显示它正在尝试连接到端口 8032。至于 sharelib 包,我将如何检查版本不匹配?我确实确保当我使用 sbt 构建应用程序时,我在 build.sbt 中将 spark 依赖项标记为“已提供”并使用相同的 Scala 版本。至于超光速粒子罐,我确实在 sharelib 中看到了 tachyon-0.5.0.jartachyon-client-0.5.0.jar

标签: apache-spark oozie hortonworks-data-platform


【解决方案1】:

我终于通过将资源管理器端口(Ambari YARN 配置中的高级纱线站点设置中的yarn.resourcemanager.address)从 8050(Hortonworks 默认)更改为 8032 来解决这个问题。似乎 Oozie 仅适用于 SparkAction 的端口 8032

【讨论】:

  • 我正在尝试按照您在问题中提到的那样实施,但我面临不同的错误。JA008: File does not exist: hdfs://{namenodehost}:8020/user/oozie/share/lib/lib_20160622120957/spark/jets3t-0.7.1.jar。正如你提到的,我删除了所有默认的 spark 共享 lib jar,并将 spark lib 移动到 Oozie Sharelib 中。这对我来说是迫切需要的。你能在这方面提供帮助吗?
  • 我重新启动了纱线,现在我得到了不同的错误java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.SparkMain not found
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 2014-01-22
  • 2019-01-03
  • 1970-01-01
相关资源
最近更新 更多