Java 如何从另一个hadoop作业提交hadoop作业
我使用Oozie来安排一个非map reduce hadoop作业。hadoop作业在oozie中运行,没有给出任何错误。我想使用该hadoop作业提交另一个非map reduce hadoop作业。我该怎么做呢?在Oozie中,您可以调用同一工作流中的另一个操作来调用多个iPle hadoop作业,只需检查它是否应使用不同的操作名称调用不同的操作 下面的示例会有所帮助 e、 g:将调用oozie编写的两个shell脚本,它将按照 第一个脚本copy.sh将执行从cluster1到cluster2的distcp操作 第二个脚本将执行从cluster2下载coppied转储到本地位置的操作。 因此,工作流程如下所示:Java 如何从另一个hadoop作业提交hadoop作业,java,hadoop,oozie,Java,Hadoop,Oozie,我使用Oozie来安排一个非map reduce hadoop作业。hadoop作业在oozie中运行,没有给出任何错误。我想使用该hadoop作业提交另一个非map reduce hadoop作业。我该怎么做呢?在Oozie中,您可以调用同一工作流中的另一个操作来调用多个iPle hadoop作业,只需检查它是否应使用不同的操作名称调用不同的操作 下面的示例会有所帮助 e、 g:将调用oozie编写的两个shell脚本,它将按照 第一个脚本copy.sh将执行从cluster1到cluster
<workflow-app xmlns='uri:oozie:workflow:0.2' name='testworkflowaction'>
<start to='UserVectorUpload'/>
<action name="shellAction_1">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>oozie.launcher.mapred.job.queue.name</name>
<value>default</value>
</property>
</configuration>
<exec>scipt_copy.sh</exec>
<file>hdfs://cluster2:8020/localtion_of_script_in_cluster/scipt_copy.sh</file>
<capture-output/>
</shell>
<ok to="shellAction_2"/>
<error to="killAction"/>
</action>
<kill name="killAction">
<message>Shell Action Failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="shellAction_2">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>oozie.launcher.mapred.job.queue.name</name>
<value>default</value>
</property>
</configuration>
<exec>scipt_download.sh</exec>
<file>hdfs://cluster2:8020/localtion_of_script_in_cluster/scipt_download.sh</file>
<capture-output/>
</shell>
<ok to="end"/>
<error to="killAction"/>
</action>
<kill name="killAction">
<message>Shell Action Failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
${jobTracker}
${nameNode}
oozie.launcher.mapred.job.queue.name
违约
scipt_copy.sh
hdfs://cluster2:8020/localtion_of_script_in_cluster/scipt_copy.sh
Shell操作失败,错误消息[${wf:errorMessage(wf:lastErrorNode())}]
${jobTracker}
${nameNode}
oozie.launcher.mapred.job.queue.name
违约
scipt_下载.sh
hdfs://cluster2:8020/localtion_of_script_in_cluster/scipt_download.sh
Shell操作失败,错误消息[${wf:errorMessage(wf:lastErrorNode())}]
因此,在上面的示例中,第一个操作是使用distcp从clustet1到cluster2执行script_copy.sh,一旦distcp完成,它将使用get或copyToLocal功能将脚本从cluste2下载到本地位置
您可以使用的另一个备选选项是将单个脚本中的操作和所有相同的操作组合在一个操作中,尽管此步骤在脚本过程非常复杂的情况下没有用处。在Oozie中,您可以调用同一工作流中的另一个操作来调用多个iple hadoop作业,只需检查点,它应使用不同的操作名称调用不同的操作 下面的示例会有所帮助 e、 g:将调用oozie编写的两个shell脚本,它将按照 第一个脚本copy.sh将执行从cluster1到cluster2的distcp操作 第二个脚本将执行从cluster2下载coppied转储到本地位置的操作。 因此,工作流程如下所示:
<workflow-app xmlns='uri:oozie:workflow:0.2' name='testworkflowaction'>
<start to='UserVectorUpload'/>
<action name="shellAction_1">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>oozie.launcher.mapred.job.queue.name</name>
<value>default</value>
</property>
</configuration>
<exec>scipt_copy.sh</exec>
<file>hdfs://cluster2:8020/localtion_of_script_in_cluster/scipt_copy.sh</file>
<capture-output/>
</shell>
<ok to="shellAction_2"/>
<error to="killAction"/>
</action>
<kill name="killAction">
<message>Shell Action Failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<action name="shellAction_2">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>oozie.launcher.mapred.job.queue.name</name>
<value>default</value>
</property>
</configuration>
<exec>scipt_download.sh</exec>
<file>hdfs://cluster2:8020/localtion_of_script_in_cluster/scipt_download.sh</file>
<capture-output/>
</shell>
<ok to="end"/>
<error to="killAction"/>
</action>
<kill name="killAction">
<message>Shell Action Failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
${jobTracker}
${nameNode}
oozie.launcher.mapred.job.queue.name
违约
scipt_copy.sh
hdfs://cluster2:8020/localtion_of_script_in_cluster/scipt_copy.sh
Shell操作失败,错误消息[${wf:errorMessage(wf:lastErrorNode())}]
${jobTracker}
${nameNode}
oozie.launcher.mapred.job.queue.name
违约
scipt_下载.sh
hdfs://cluster2:8020/localtion_of_script_in_cluster/scipt_download.sh
Shell操作失败,错误消息[${wf:errorMessage(wf:lastErrorNode())}]
因此,在上面的示例中,第一个操作是使用distcp从clustet1到cluster2执行script_copy.sh,一旦distcp完成,它将使用get或copyToLocal功能将脚本从cluste2下载到本地位置
您可以使用的另一个备选选项是将单个脚本中的操作和所有相同的操作组合在单个操作中,尽管这些步骤在脚本过程非常复杂的情况下没有用处