Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created on 11-16-2016 09:08 AM - edited 09-16-2022 03:47 AM
Hi All,
I've been developing some oozie workflows that include spark actions. As a smoke test I've been running the SparkPi application from spark examples jar to make sure everything is working as I would expect. Originally my testing was done on CDH 5.8.0 where this workflow was working fine. I've tested it against 5.8.3 and 5.9.0 as well and it does NOT work. I get the following error when yarn tries to execute the spark job:
Error: Could not find or load main class org.apache.spark.deploy.yarn.ApplicationMaster
The workflow and its property file are configured and placed on HDFS as seen below.
placement:
# hadoop fs -ls -R /foo/oozie/oozieApps/pi drwxr-xr-x - foo foo 0 2016-11-15 21:16 /foo/oozie/oozieApps/pi/lib -rw-r--r-- 3 foo foo 107864471 2016-11-15 21:16 /foo/oozie/oozieApps/pi/lib/spark-assembly.jar -rw-r--r-- 3 foo foo 655 2016-11-15 21:13 /foo/oozie/oozieApps/pi/workflow.xml
NOTE: The spark-assembly.jar is a copy of /opt/cloudera/parcels/CDH/lib/spark/lib/spark-assembly-1.6.0-cdh5.8.3-hadoop2.6.0-cdh5.8.3.jar
pi.properties:
master=yarn-master
mode=cluster
user.name=foo
nameNode=hdfs://example.com:8020
jobTracker=example.com:8050
queueName=default
oozie.wf.application.path=${nameNode}/foo/oozie/oozieApps/pi
sparkExampleJar=${nameNode}/foo/tmp/spark-examples.jar
argN=10
oozie.use.system.libpath=true
workflow.xml
<workflow-app xmlns='uri:oozie:workflow:0.5' name='SparkPi'>
<start to='spark-node' />
<action name='spark-node'>
<spark xmlns="uri:oozie:spark-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<master>${master}</master>
<mode>${mode}</mode>
<name>Spark-pi</name>
<class>org.apache.spark.examples.SparkPi</class>
<jar>${sparkExampleJar}</jar>
<arg>${argN}</arg>
</spark>
<ok to="end" />
<error to="fail" />
</action>
<kill name="fail">
<message>Workflow failed, error
message[\${wf:errorMessage(wf:lastErrorNode())}]
</message>
</kill>
<end name='end' />
</workflow-app>
I'm guessing that this is some sort of classpath issue because I've checked the content of the spark-assembly.jar and the class that it says it cannot find is indeed included. Any ideas on how to fix this issue or troubleshoot it further?
Created 11-17-2016 11:50 AM
So I found a solution for getting it to work on 5.8.3 and 5.9.
I added the following configuration to the workflow:
<spark-opts>--conf spark.yarn.jar=local:/opt/cloudera/parcels/CDH/lib/spark/lib/spark-assembly.jar</spark-opts>
I don't know why that is necessary on 5.8.3 and 5.9 but not on 5.8.0.
Created on 11-17-2016 07:26 AM - edited 11-17-2016 07:27 AM
Can anyone confirm/deny that they are able to reproduce the problem on their 5.8.3 or 5.9.0 environments?
Created 11-17-2016 11:50 AM
So I found a solution for getting it to work on 5.8.3 and 5.9.
I added the following configuration to the workflow:
<spark-opts>--conf spark.yarn.jar=local:/opt/cloudera/parcels/CDH/lib/spark/lib/spark-assembly.jar</spark-opts>
I don't know why that is necessary on 5.8.3 and 5.9 but not on 5.8.0.