Oozie SparkAction 失败
Oozie SparkAction failing
在 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.")
在 YARN-Client 和 YARN-Cluster 模式下使用 spark-submit
时此应用程序有效。
我的job.properties
和workflow.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 sharelib(将它们移动到不同的目录),只留下以下 jars:
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分钟后被kill,报错信息如下:Call From host.xxx.com/x.x.x.x 到 0.0.0.0:8032 连接异常失败:java.net.ConnectException:连接被拒绝;有关详细信息,请参阅:http://wiki.apache.org/hadoop/ConnectionRefused
我能ping通0.0.0.0,但不能telnet 8032端口
我最终通过将资源管理器端口(yarn.resourcemanager.address
在 Ambari YARN 配置中的高级 yarn-site 设置中)从 8050(Hortonworks 默认值)更改为 8032 来解决这个问题。Oozie 似乎只在端口 8032 上工作火花动作
在 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.")
在 YARN-Client 和 YARN-Cluster 模式下使用 spark-submit
时此应用程序有效。
我的job.properties
和workflow.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 sharelib(将它们移动到不同的目录),只留下以下 jars:
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分钟后被kill,报错信息如下:Call From host.xxx.com/x.x.x.x 到 0.0.0.0:8032 连接异常失败:java.net.ConnectException:连接被拒绝;有关详细信息,请参阅:http://wiki.apache.org/hadoop/ConnectionRefused
我能ping通0.0.0.0,但不能telnet 8032端口
我最终通过将资源管理器端口(yarn.resourcemanager.address
在 Ambari YARN 配置中的高级 yarn-site 设置中)从 8050(Hortonworks 默认值)更改为 8032 来解决这个问题。Oozie 似乎只在端口 8032 上工作火花动作