说明
本文描述问题及解决方法同样适用于 弹性 MapReduce(EMR)。
背景
本文将使用oozie组件自带的例子,详细介绍如何在oozie workflow上提交一个MapReduce jar。 本文以oozie 4.3.1版本为例。
准备
运行oozie需要先安装oozie的sharelib:https://oozie.apache.org/docs/4.3.1/WorkflowFunctionalSpec.html#ShareLib。在EMR中,已经默认给hadoop用户安装了sharelib,即如果使用hadoop用户来提交workflow作业,则不需要再进行sharelib的安装。
登录到集群master节点,进入oozie目录,并切换用户身份为hadoop:
代码语言:javascript复制cd /usr/local/service/oozie
su hadoop
解压oozie自带的示例包:
代码语言:javascript复制tar -xvf oozie-examples.tar.gz
提交作业
进入/usr/local/service/oozie/examples/apps/map-reduce目录,编辑job.properties文件:
代码语言:javascript复制nameNode=hdfs://master节点IP:4007
jobTracker=master节点IP:5000
queueName=default
examplesRoot=examplesoozie
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/map-reduce/workflow.xml
outputDir=map-reduce
job.properties 文件中需要指定不同的 NameNode 和 JobTracker(ResourceManager),上面示例中是EMR的默认端口,如不清楚集群的端口,可在hadoop配置文件中的fs.defaultFS(位于core-site.xml)和yarn.resourcemanager.address(位于yarn-site.xml)中查看。
在HDFS上新建目录(确保是hadoop用户):
代码语言:javascript复制hadoop fs -mkdir -p /user/hadoop/examplesoozie/map-reduce
hadoop fs -mkdir -p /user/hadoop/examplesoozie/input-data
hadoop fs -mkdir -p /user/hadoop/examplesoozie/map-reduce/lib
在新建的目录中,上传示例中的workflow文件:
代码语言:javascript复制hadoop fs -copyFromLocal /usr/local/service/oozie/examples/apps/map-reduce/workflow.xml /user/hadoop/examplesoozie/map-reduce/workflow.xml
如要了解workflow文件的详细格式,请参考oozie 官方文档:https://oozie.apache.org/docs/4.3.1
上传输入数据:
代码语言:javascript复制hadoop fs -copyFromLocal /usr/local/service/oozie/examples/input-data/ /user/hadoop/examplesoozie/
上传jar包:
代码语言:javascript复制hadoop fs -copyFromLocal /usr/local/service/oozie/examples/apps/map-reduce/lib/oozie-examples-4.3.0.jar /user/hadoop/examplesoozie/map-reduce/lib/oozie-examples-4.3.0.jar
提交并运行作业(注意:job.properties应该是本地文件而非HDFS文件):
代码语言:javascript复制/usr/local/service/oozie/bin/oozie job -oozie http://localhost:12000/oozie -config /usr/local/service/oozie/examples/apps/map-reduce/job.properties -run
执行成功之后,会返回一个jobId,类似:
代码语言:javascript复制job: 0000001-190226180429763-oozie-hado-W
查看运行情况
命令行查看
根据jobId查看任务情况:
代码语言:javascript复制/usr/local/service/oozie/bin/oozie job -oozie http://localhost:12000/oozie -info 0000000-190226180429763-oozie-hado-W
输出结果:
代码语言:javascript复制Job ID : 0000001-190226180429763-oozie-hado-W
------------------------------------------------------------------------------------------------------------------------------------
Workflow Name : map-reduce-wf
App Path : hdfs://172.21.0.18:4007/user/hadoop/examplesoozie/map-reduce/workflow.xml
Status : SUCCEEDED
Run : 0
User : hadoop
Group : -
Created : 2019-02-28 06:35 GMT
Started : 2019-02-28 06:35 GMT
Last Modified : 2019-02-28 06:35 GMT
Ended : 2019-02-28 06:35 GMT
CoordAction ID: -
Actions
------------------------------------------------------------------------------------------------------------------------------------
ID Status Ext ID Ext Status Err Code
------------------------------------------------------------------------------------------------------------------------------------
0000001-190226180429763-oozie-hado-W@:start: OK - OK -
------------------------------------------------------------------------------------------------------------------------------------
0000001-190226180429763-oozie-hado-W@mr-node OK job_1551174942929_0003 SUCCEEDED -
------------------------------------------------------------------------------------------------------------------------------------
0000001-190226180429763-oozie-hado-W@end OK - OK -
------------------------------------------------------------------------------------------------------------------------------------
WebUI查看
可在浏览器中访问oozie WebUI: http://master节点外网IP:30001/emr-oozie 也可通过腾讯云EMR控制台->组件管理->原生WebUI访问地址链接直接进入。 如图:
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!