目前是否有办法通过提供的MapReduceV1和/或YARN REST API在外部提交应用程序?我希望在不添加自定义服务的情况下找到一种方法。
到目前为止,我只是使用YARN从ResourceManager找出GET
申请状态的原因。
也许我正在看错了,有一种更好的方法可以在外部做到这一点吗?
答案 0 :(得分:2)
因此,经过一些研究,我认为Oozie Workflow Scheduler是可行的方法。
这是一个示例工作流,可以提交到在Hadoop系统内运行的REST端点,以启动MapReduce作业。 <action>
不限于MapReduce。
<workflow-app xmlns='uri:oozie:workflow:0.1' name='map-reduce-wf'>
<start to='hadoop1' />
<action name='hadoop1'>
<map-reduce>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.mapper.class</name>
<value>org.apache.oozie.example.SampleMapper</value>
</property>
<property>
<name>mapred.reducer.class</name>
<value>org.apache.oozie.example.SampleReducer</value>
</property>
<property>
<name>mapred.map.tasks</name>
<value>1</value>
</property>
<property>
<name>mapred.input.dir</name>
<value>input-data</value>
</property>
<property>
<name>mapred.output.dir</name>
<value>output-map-reduce</value>
</property>
<property>
<name>mapred.job.queue.name</name>
<value>unfunded</value>
</property>
</configuration>
</map-reduce>
<ok to="end" />
<error to="fail" />
</action>
<kill name="fail">
<message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name='end' />
</workflow-app>
的样本