oozie4.1.x 执行MapReduce

创建目录

在 /program/oozie-4.1.0-cdh5.14.0/oozie_apps/ 创建 std2_mr,用于存放相关文件

cd /program/oozie-4.1.0-cdh5.14.0/oozie_apps
mkdir std2_mr

在 std2_mr 目录下创建 lib文件夹,存放 mr jar包

cd std2_mr
mkdir lib

上传 mr jar

将 mr jar包上传到 lib 目录

验证 mr 程序可用

验证 mr 程序可用,输入路径、输出路径确实可用

hadoop jar chongdianzhuang-0.0.1-SNAPSHOT.jar chongdianzhuang.Main2 /chongdianzhuang/chongdianzhuang.txt /cdz_res/1

编写 job.properties

nameNode=hdfs://hadoop1:8020
jobTracker=hadoop2:8032
queueName=default
examplesRoot=oozie_apps

oozie.wf.application.path=${nameNode}/${examplesRoot}/std2_mr/workflow.xml
inputDir=/chongdianzhuang/chongdianzhuang.txt
outputDir=/cdz_res/1

编写 workflow.xml

<workflow-app xmlns="uri:oozie:workflow:0.2" name="map-reduce-wf">
    <start to="mr-node"/>
    <action name="mr-node">
        <map-reduce>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <prepare>
                <delete path="${nameNode}/${outputDir}"/>
            </prepare>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>


                <property>
                    <name>mapred.mapper.new-api</name>
                    <value>true</value>
                </property>
                <property>
                    <name>mapred.reducer.new-api</name>
                    <value>true</value>
                </property>
                <!-- 指定mr输出key类型 -->
                <property>
                    <name>mapreduce.job.output.key.class</name>
                    <value>org.apache.hadoop.io.Text</value>
                </property>
                <!-- 指定mr输出value类型 -->
                <property>
                    <name>mapreduce.job.output.value.class</name>
                    <value>chongdianzhuang.Cdz</value>
                </property>
                <!-- 指定输入路径 -->
                <property>
                    <name>mapred.input.dir</name>
                    <value>${nameNode}/${inputDir}</value>
                </property>
                <!-- 指定输出路径 -->
                <property>
                    <name>mapred.output.dir</name>
                    <value>${nameNode}/${outputDir}</value>
                </property>
                <!-- 指定mapper -->
                <property>
                    <name>mapreduce.job.map.class</name>
                    <value>chongdianzhuang.MyMapper</value>
                </property>
                <!-- 指定reduce -->
                <property>
                    <name>mapreduce.job.reduce.class</name>
                    <value>chongdianzhuang.MyReducer</value>
                </property>
                <!-- 指定map task 数量 -->
                <property>
                    <name>mapred.map.tasks</name>
                    <value>1</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>

上传到 hdfs

cd /program/oozie-4.1.0-cdh5.14.0/
hadoop fs -put oozie_apps/std2_mr /oozie_apps

job.properties 可以不上传到 HDFS

重新上传

重新上传需要先删除 hdfs 的相关文件夹

hadoop fs -rm -r /oozie_apps/std2_mr

执行

cd /program/oozie-4.1.0-cdh5.14.0
bin/oozie job -oozie http://hadoop3:11000/oozie -config oozie_apps/std2_mr/job.properties -run

解释:

  • http://hadoop3:11000/oozie:oozie server的url
  • oozie_apps/std2_mr/job.properties:本机 job.properties 所在的路径
    写绝对路径也可以:
    /program/oozie-4.1.0-cdh5.14.0/oozie_apps/std2_mr/job.properties

在 oozie web查看

访问 http://hadoop3:11000

在 yarn 查看结果

访问:http://hadoop2:8088/

注意: 执行 2 次 MapReduce 程序,第一个是 oozie 的 mr 程序,第二个是我们的 mr 程序

在 hdfs 查看生成的文件

访问 http://hadoop1:9870/explorer.html#/cdz_res


原文出处:/show_1IX2G0TmE0P5.html