「EMR 开发指南」之 Oozie 作业调度

2023-11-30 18:28:39 浏览数 (3)

说明

本文描述问题及解决方法同样适用于 弹性 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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞