Oozie提交作业总结

Posted asin929

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oozie提交作业总结相关的知识,希望对你有一定的参考价值。


命令行方式

最常用的就是通过命令行方式提交,见YARN和HDFS的调用方式汇总中的“使用oozie提交yarn作业环节。


REST方式

使用REST的方式显然更通用,当然原理与上述完全一致。

步骤1–创建工作空间目录

首先在HDFS上创建相应工作空间目录–/user/$user.name/workspaces,放置oozie要用到的workflow.xml,并创建lib文件夹,里面放置打好的jar包,如下图。注:我这里的user.name变量的值是“hdfs”。

完整的workflow文件如下,里面变量$inputDir$outputDir等的值需要从下一步骤产生的config.xml文件中获取。

特别注意:此处应该把原MR程序中所有的作业设置参数都拿过来,否则即使作业提交成功,结果也不正确!!!

<workflow-app name="test-wordcount" xmlns="uri:oozie:workflow:0.4">
    <start to="test-wordcount"/>
    <action name="test-wordcount">
        <map-reduce>
            <job-tracker>$jobTracker</job-tracker>
            <name-node>$nameNode</name-node>
            <configuration>
                <property>
                    <name>mapreduce.input.fileinputformat.inputdir</name>
                    <value>$inputDir</value>
                </property>
                <property>
                    <name>mapreduce.output.fileoutputformat.outputdir</name>
                    <value>$outputDir</value>
                </property>
                <property>
                    <name>mapreduce.job.map.class</name>
                    <value>wordcount.WordCount$TokenizerMapper</value>
                </property>
                <property>
                    <name>mapreduce.job.reduce.class</name>
                    <value>wordcount.WordCount$IntSumReducer</value>
                </property>
                <property>
                    <name>mapreduce.job.combine.class</name>
                    <value>wordcount.WordCount$IntSumReducer</value>
                </property>
                <property>
                    <name>mapreduce.job.output.key.class</name>
                    <value>org.apache.hadoop.io.Text</value>
                </property>
                <property>
                    <name>mapreduce.job.output.value.class</name>
                    <value>org.apache.hadoop.io.IntWritable</value>
                </property>
                <property>
                    <name>mapred.mapper.new-api</name>
                    <value>true</value>
                </property>
                <property>
                    <name>mapred.reducer.new-api</name>
                    <value>true</value>
                </property>
                <property>
                    <name>mapreduce.job.reduces</name>
                    <value>1</value>
                </property>
            </configuration>
        </map-reduce>
        <ok to="end"/>
        <error to="kill"/>
    </action>
    <kill name="kill">
        <message>Action failed, error message[$wf:errorMessage(wf:lastErrorNode())]</message>
    </kill>
    <end name="end"/>
</workflow-app>

步骤2—新建配置文件

在本地新建配置文件config.xml,定义变量的值,内容如下,

    <configuration>
        <property>
            <name>oozie.use.system.libpath</name>
            <value>True</value>
        </property>
        <property>
            <name>security_enabled</name>
            <value>False</value>
        </property>
        <property>
            <name>user.name</name>
            <value>hdfs</value>
        </property>
        <property>
            <name>oozie.wf.application.path</name>
            <value>$nameNode/user/$user.name/workspaces</value>
        </property>
        <property>
            <name>nameNode</name>
            <value>hdfs://your-namenode:8020</value>
        </property>
        <property>
            <name>jobTracker</name>
            <value>your-jobtracker-server:8032</value>
        </property>
        <property>
            <name>inputDir</name>
            <value>$nameNode/user/$user.name/reviews_data.csv</value>
        </property>
        <property>
            <name>outputDir</name>
            <value>$nameNode/user/$user.name/output2</value>
        </property>
    </configuration>

步骤3—提交workflow

 curl -X POST -H "Content-Type: application/xml"     -d @config.xml "http://oozie-server:11000/oozie/v2/jobs?action=start"

在HUE中查看,

以上是关于Oozie提交作业总结的主要内容,如果未能解决你的问题,请参考以下文章

HUE提交MapReduce作业示例

HUE提交MapReduce作业示例

从 oozie 提交猪作业

oozie java api提交作业,kerberos身份验证错误

oozie 怎么知道我是谁?

oozie 作业提交失败,检查您的配置是不是有 mapreduce.framework.name 和相应的服务器地址