创建目录
在 /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的urloozie_apps/std2_mr/job.properties:本机job.properties所在的路径
写绝对路径也可以:/program/oozie-4.1.0-cdh5.14.0/oozie_apps/std2_mr/job.properties
在 oozie web查看
在 yarn 查看结果
注意: 执行 2 次 MapReduce 程序,第一个是 oozie 的 mr 程序,第二个是我们的 mr 程序
在 hdfs 查看生成的文件
访问 http://hadoop1:9870/explorer.html#/cdz_res

