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.inputdirname>
                    <value>${inputDir}value>
                property>
                <property>
                    <name>mapreduce.output.fileoutputformat.outputdirname>
                    <value>${outputDir}value>
                property>
                <property>
                    <name>mapreduce.job.map.classname>
                    <value>wordcount.WordCount$TokenizerMappervalue>
                property>
                <property>
                    <name>mapreduce.job.reduce.classname>
                    <value>wordcount.WordCount$IntSumReducervalue>
                property>
                <property>
                    <name>mapreduce.job.combine.classname>
                    <value>wordcount.WordCount$IntSumReducervalue>
                property>
                <property>
                    <name>mapreduce.job.output.key.classname>
                    <value>org.apache.hadoop.io.Textvalue>
                property>
                <property>
                    <name>mapreduce.job.output.value.classname>
                    <value>org.apache.hadoop.io.IntWritablevalue>
                property>
                <property>
                    <name>mapred.mapper.new-apiname>
                    <value>truevalue>
                property>
                <property>
                    <name>mapred.reducer.new-apiname>
                    <value>truevalue>
                property>
                <property>
                    <name>mapreduce.job.reducesname>
                    <value>1value>
                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.libpathname>
            <value>Truevalue>
        property>
        <property>
            <name>security_enabledname>
            <value>Falsevalue>
        property>
        <property>
            <name>user.namename>
            <value>hdfsvalue>
        property>
        <property>
            <name>oozie.wf.application.pathname>
            <value>${nameNode}/user/${user.name}/workspacesvalue>
        property>
        <property>
            <name>nameNodename>
            <value>hdfs://your-namenode:8020value>
        property>
        <property>
            <name>jobTrackername>
            <value>your-jobtracker-server:8032value>
        property>
        <property>
            <name>inputDirname>
            <value>${nameNode}/user/${user.name}/reviews_data.csvvalue>
        property>
        <property>
            <name>outputDirname>
            <value>${nameNode}/user/${user.name}/output2value>
        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提交作业总结_第1张图片

你可能感兴趣的:(Oozie)