最近更新时间:2022.12.21 11:34:52
首次发布时间:2022.12.21 11:34:52
Oozie 是一个开源的大数据工作流调度引擎,能够提供对 Hadoop 作业的任务调度与协调。本文介绍如何在火山引擎 E-MapReduce(EMR)上使用 Oozie。
适合 EMR 2.x 版本,且要求是 2.1.0 以后的版本(包括 EMR 2.1.0)。详见版本概述。
已创建 EMR 集群,且安装有 Oozie 组件。有两种方式可以安装Oozie组件:
集群的访问链接需要 emr-master-1 节点的 ECS ID 实例绑定弹性公网IP。详见绑定公网IP。
需要在集群详情 > 访问链接 > 快速配置服务端口中,给源地址和对应端口添加白名单才可继续访问。
目前 Oozie 组件以白名单形式向您开放,您可通过提工单的方式,请 EMR 支持人员进行开通。
在 EMR 控制台的访问链接页中提供了 Oozie 的 Web UI 链接,点击该链接,您便可访问 Oozie Web UI 界面。对于国内用户,建议将 WebUI 时区设置为 GMT+08:00。
在 EMR 集群中,已安装了 sharelib,所以您使用 Oozie 提交 Workflow 作业时,不需要再安装 sharelib。当然您也可以对 sharelib 进行编辑与更新,操作步骤如下:
cd /usr/lib/emr/current/oozie bin/oozie-setup.sh sharelib create -fs hdfs://{HDFS的访问地址} -locallib oozie-sharelib-5.2.1.tar.gz oozie admin -oozie http://{oozie-server-ip}:11000/oozie -sharelibupdate
EMR 集群中,Oozie 组件提供有任务的样例代码。在 Oozie client 安装目录/usr/lib/emr/current/oozie-client,oozie-examples.tar.gz 中包含组件的 workflow 样例。对文件 oozie-examples.tar.gz 进行解压,然后上传到 hdfs。示例:
cd /usr/lib/emr/current/oozie-client tar zxvf oozie-examples.tar.gz su oozie -c ' cd /usr/lib/emr/current/oozie-client hadoop fs -put examples examples '
说明
su oozie
指本文中任务示例是以 oozie 用户提交的。如果采用其他用户执行,则切换相应用户即可。
下面将为您介绍 MapReduce、Spark、Hive 任务提交示例。
修改 mapreduce 的 job 配置:/usr/lib/emr/current/oozie-client/examples/apps/map-reduce/job.properties
,将该文件中 HDFS 和 YARN 的配置按照实际情况修改:
nameNode={HDFS的访问链接} resourceManager={YARN ResourceManager地址}:8050 queueName=default examplesRoot=examples oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce/workflow.xml outputDir=map-reduce
说明
fs.defaultFS
中获得修改后文件样例:如下:
nameNode=hdfs://emr-2ud95en7dj42xxxxxxx-master-1:8020 resourceManager=emr-2ud95en7dj42xxxxxxx-master-1:8050 queueName=default examplesRoot=examples oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce/workflow.xml outputDir=map-reduce
修改下面命令中 {oozie-server-ip} 的值,然后提交 job:
su oozie -c " oozie job -oozie http://{oozie-server-ip}:11000/oozie -config /usr/lib/emr/current/oozie-client/examples/apps/map-reduce/job.properties -run "
执行命令查看 job 信息。将上个步骤中,job 提交后返回的 id,替换下面的 {job ID}
su oozie -c ' oozie job -oozie http://{oozie-server-ip}:11000/oozie -info {job ID} '
也可以访问 Oozie web ui 查看 job 运行情况。
修改 spark 的 job 配置文件/usr/lib/emr/current/oozie-client/examples/apps/spark/job.properties
,将该文件中 HDFS 和 YARN 的配置按照实际情况修改:
nameNode={HDFS的访问链接} resourceManager={YARN ResourceManager地址}:8050 master=local[*] mode=client queueName=default examplesRoot=examples oozie.use.system.libpath=true oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/spark
提交job:
su oozie -c ' oozie job -oozie http://{oozie-server-ip}:11000/oozie -config /usr/lib/emr/current/oozie-client/examples/apps/spark/job.properties -run '
查看job运行状态:
su oozie -c ' oozie job -oozie http://{oozie-server-ip}:11000/oozie -info {job ID} '
修改 Hive 的 job 配置文件/usr/lib/emr/current/oozie-client/examples/apps/hive2/job.properties
,将该文件中 HDFS 和 YARN 的地址、HiveServer2 的地址、oozie 用户的密码,按照实际情况修改;
nameNode={HDFS的访问链接} resourceManager={YARN ResourceManager地址}:8050 queueName=default jdbcURL=jdbc:hive2://{HiveServer2的地址}:10000/default password={oozie用户的密码} examplesRoot=examples oozie.use.system.libpath=true oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/hive2
说明
由于示例中是以 oozie 用户提交的 job,所以这里需要填写 oozie 用户的密码。oozie 用户的密码可以通过 EMR 集群的 OpenLdap 组件配置参数 oozie_password 得到,获取路径:集群详情 > 服务列表 > OpenLdap 组件服务 > 服务参数。
提交 job:
su oozie -c ' oozie job -oozie http://{oozie-server-ip}:11000/oozie -config /usr/lib/emr/current/oozie-client/examples/apps/hive2/job.properties -run '
查看 job 运行状态:
su oozie -c ' oozie job -oozie http://{oozie-server-ip}:11000/oozie -info {job ID} '