oozie4.1.x 执行MapReduce 作者:马育民 • 2020-11-19 07:44 • 阅读:10192 # 创建目录 在 `/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 [](https://www.malaoshi.top/upload/pic/oozie/Snipaste_2021-11-19_00-22-54.png) # 在 yarn 查看结果 访问:http://hadoop2:8088/ [](https://www.malaoshi.top/upload/pic/oozie/Snipaste_2021-11-19_00-12-35.png) **注意:** 执行 2 次 MapReduce 程序,第一个是 oozie 的 mr 程序,第二个是我们的 mr 程序 # 在 hdfs 查看生成的文件 访问 http://hadoop1:9870/explorer.html#/cdz_res 原文出处:/show_1IX2G0TmE0P5.html