通过REST API从外部提交应用程序

时间:2012-11-07 21:51:55

标签: hadoop mapreduce yarn

目前是否有办法通过提供的MapReduceV1和/或YARN REST API在外部提交应用程序?我希望在不添加自定义服务的情况下找到一种方法。

到目前为止,我只是使用YARN从ResourceManager找出GET申请状态的原因。

也许我正在看错了,有一种更好的方法可以在外部做到这一点吗?

1 个答案:

答案 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>

取自https://github.com/yahoo/oozie/wiki/Oozie-WF-use-cases

的样本