目前有没有办法通过为 MapReduceV1 和/或 YARN 提供的 REST API 向外部提交应用程序?我希望在不添加自定义服务的情况下找到一种方法。
到目前为止,我只弄清楚了如何使用 YARNGET
从ResourceManager获取应用程序状态。
也许我看错了,有更好的方法在外部做到这一点?
目前有没有办法通过为 MapReduceV1 和/或 YARN 提供的 REST API 向外部提交应用程序?我希望在不添加自定义服务的情况下找到一种方法。
到目前为止,我只弄清楚了如何使用 YARNGET
从ResourceManager获取应用程序状态。
也许我看错了,有更好的方法在外部做到这一点?
所以在做了一些研究之后,我决定Oozie Workflow Scheduler是要走的路。
这是一个示例工作流,可以提交到在 Hadoop 系统内运行的 REST 端点以启动 MapReduce 作业。 <action>
s 不限于 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>