[关闭]
@xtccc 2016-01-23T08:19:16.000000Z 字数 2210 阅读 9421

通过HUE运行Workflow

给我写信
GitHub

此处输入图片的描述


Oozie




版本: CDH 5.5.1



1 单个Action


1.1 登录HUE

admin 用户登录到HUE。

1.2 创建新的Workflow

在浏览器中依次点击【Workflows】 -> 【Editors】 ->【Wokflows】,进入Workflow Editor,然后点击【Create】。

QQ20160121-0@2x.png-84.8kB



点击右上角的【Settings】按钮,出现一个弹出窗口,我们可以在这里为Workflow设置变量名,并设置Workspace。现在,添加inputoutput这两个变量,并将Workspace设置为HDFS的目录/user/admin/workspaces,如下:

QQ20160121-1@2x.png-49.7kB


设置好后,点击右上角的叉关闭这个弹出窗口,回到之前的页面(现在还需要自己将Spark Job所需的Jar包放入相应的HDFS目录中)。

我们将【Spark】图标拖到相应的位置,然后继续进行设置。我们设置了Jar包的路径 lib/oozie-examples.jar,注意这是HDFS路径,且是相对于Workspace的路径(所以实际路径就是/user/admin/workspaces/lib/oozie-examples.jar);还要设置main class。

由于这个main class的作用的是复制HDFS的文件,它在运行时需要给main方法传入两个参数,分别是src path和dest path,所以这里我们继续添加参数,如下图:

QQ20160121-3@2x.png-90kB

这里的${input}${output}就是之前我们在【settings】中设置的变量名。


好了,一切都设置好了之后,点击右上角的【Save】按钮。

1.3 提交Workflow

点击页面上的【Submit】按钮,即可提交该Workflow Job。等待一段时间后,如果成功结束,我们可以在HDFS中看到成功地生成了输出目录/user/admin/Here

并且,我们在Workspace(/user/admin/workspaces)中还能看到自动上传的两个文件 —— job.propertiesworkflow.xml。它们的内容如下:

  1. # job.properties文件
  2. oozie.use.system.libpath=True
  3. security_enabled=False
  4. dryrun=False
  5. nameNode=hdfs://nameservice1
  6. output=Here
  7. input=/user/hue/oozie/workspaces/data/sonnets.txt
  1. <!-- workflow.xml文件 -->
  2. <workflow-app name="My_Workflow" xmlns="uri:oozie:workflow:0.5">
  3. <start to="spark-a8b9"/>
  4. <kill name="Kill">
  5. <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
  6. </kill>
  7. <action name="spark-a8b9">
  8. <spark xmlns="uri:oozie:spark-action:0.1">
  9. <job-tracker>${jobTracker}</job-tracker>
  10. <name-node>${nameNode}</name-node>
  11. <master>local[*]</master>
  12. <mode>client</mode>
  13. <name>MySpark</name>
  14. <class>org.apache.oozie.example.SparkFileCopy</class>
  15. <jar>lib/oozie-examples.jar</jar>
  16. <arg>${input}</arg>
  17. <arg>${output}</arg>
  18. </spark>
  19. <ok to="End"/>
  20. <error to="Kill"/>
  21. </action>
  22. <end name="End"/>
  23. </workflow-app>


2 多个Actions


2.1 需求

现在有1个Spark App Jar,里面含有2个main class,分别如下:

主类 作用
cn.gridx.spark.examples.basic.WordCount 对输入路径input中的文本文件进行wordcount计算,将结果以文本形式输出到输出路径output中
cn.gridx.spark.examples.basic.AppendNum 将WordCount的计算结果作为输入,在每一行文本前面加上序号,然后再输出到HDFS的一个文本文件中

2.2 HUE中实现创建WF

QQ20160122-0@2x.png-137.9kB



QQ20160122-1@2x.png-55kB




3 常见异常


3.1 找不到JAR包

如果JAR没有被放在Workspace中,或者它的权限不够,在运行时可能会出现main class找不到的异常:

java.lang.ClassNotFoundException: org.apache.oozie.examples.SparkFileCopy



另外,如果以yarn-cluster模式提交,则要填写HDFS的完整路径,都则会找不到这个JAR包。

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