[关闭]
@xtccc 2016-01-27T13:38:43.000000Z 字数 2102 阅读 4894

REST API For Oozie

给我写信
GitHub

此处输入图片的描述


Oozie



参考链接:


提交Spark任务


需求
通过Oozie的REST API提交一个Spark Workflow,运行一个WordCount程序。该Job相关的几个参数如下:

  • Jar
    spark.examples-1.0-SNAPSHOT.jar

  • Main Class
    cn.gridx.spark.examples.basic.WordCount

  • HDFS Input Path
    /user/admin/data/in

  • HDFS Output Path
    /user/admin/data/out


实现步骤

在HDFS上创建一个目录 /user/admin/workspaces,将它作为Oozie workflow的工作空间。

将Spark Job的Jar包上传到HDFS目录/user/admin/workspaces/lib中,然后创建HDFS文件/user/admin/workspaces/workflow.xml,其内容如下:

  1. <workflow-app name="Submit-Spark-WF-From-REST" xmlns="uri:oozie:workflow:0.5">
  2. <start to="startNode"/>
  3. <kill name="killNode">
  4. <message>Action failed,
  5. error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
  6. </kill>
  7. <action name="startNode">
  8. <spark xmlns="uri:oozie:spark-action:0.1">
  9. <job-tracker>${jobTracker}</job-tracker>
  10. <name-node>${nameNode}</name-node>
  11. <master>yarn-client</master>
  12. <mode>client</mode>
  13. <name>MySparkAction</name>
  14. <class>cn.gridx.spark.examples.basic.WordCount</class>
  15. <jar>lib/spark.examples-1.0-SNAPSHOT.jar</jar>
  16. <arg>${inPath}</arg>
  17. <arg>${outPath}</arg>
  18. </spark>
  19. <ok to="okNode"/>
  20. <error to="killNode"/>
  21. </action>
  22. <end name="okNode"/>
  23. </workflow-app>

其中,${inPath}${outPath}是需要传给主类的两个参数。



在本地创建一个文件config.xml,其内容如下:

  1. <configuration>
  2. <property>
  3. <name>oozie.use.system.libpath</name>
  4. <value>True</value>
  5. </property>
  6. <property>
  7. <name>security_enabled</name>
  8. <value>False</value>
  9. </property>
  10. <property>
  11. <name>user.name</name>
  12. <value>admin</value>
  13. </property>
  14. <property>
  15. <name>oozie.wf.application.path</name>
  16. <value>${nameNode}/user/${user.name}/workspaces</value>
  17. </property>
  18. <property>
  19. <name>nameNode</name>
  20. <value>[NameNode-HOST]:8020</value>
  21. </property>
  22. <property>
  23. <name>jobTracker</name>
  24. <value>[ResourceManager-HOST]:8032</value>
  25. </property>
  26. <property>
  27. <name>inPath</name>
  28. <value>${nameNode}/user/${user.name}/data/in</value>
  29. </property>
  30. <property>
  31. <name>outPath</name>
  32. <value>${nameNode}/user/${user.name}/data/out</value>
  33. </property>
  34. </configuration>

由于我们的Spark是运行在YARN之上的,所以这里的jobTracker要改为YARN ResourceManager的地址。


在该节点上执行命令:

  1. curl -X POST -H "Content-Type: application/xml" \
  2. -d @config.xml "http://[oozie-server]:11000/oozie/v2/jobs?action=start"

即可提交这个Spark Workflow。

通过HUE界面可以看到这个Workflow成功运行了:
QQ20160127-0@2x.png-96.2kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注