有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
Apache Oozie 是一个开源的工作流引擎,被设计将 hadoop 生态组件的任务编排成 Workflow,然后对其进行调度、执行、管理。本文通过示例简单介绍如何在 EMR 上使用 Oozie,详细的使用文档可进一步参考社区文档
另外这里建议用户通过 Hue 的图像化界面来使用 Oozie,使用文档请移步 Hue 开发文档

前提条件

已创建弹性 MapReduce(简称 EMR )的 Hadoop 集群,并选择了 Oozie 、Hive 、Spark 服务,详情请参见 创建 EMR 集群

访问 Oozie WebUI

如果您在购买集群时勾选了开启集群节点外网,可以通过 EMR 控制台 集群服务 单击 WebUI 链接来访问。
对于国内用户,建议将 WebUI 时区设置为 GMT+08:00。



sharelib 的更新

在 EMR 集群中,已安装了 sharelib,所以您使用 Oozie 提交 Workflow 作业时,不需要再安装 sharelib。当然您也可以对 sharelib 进行编辑与更新,操作步骤如下:
cd /usr/local/service/oozie
tar -xf oozie-sharelib.tar.gz
添加 jar 包到解压出的 share 目录下要支持的 action 对应的目录下:
bin/oozie-setup.sh sharelib create -fs hdfs://active-namenode-ip:4007 -locallib shareoozie admin --oozie http://oozie-server-ip:12000/oozie -sharelibupdate

提交 Workflow 示例

EMR 集群中 Oozie 的安装目录为/usr/local/service/oozie,里面有 Oozie 支持的组件的 Workflow 示例 oozie-examples.tar.gz。进入安装目录后,切换 Hadoop 用户通过以下命令解压示例文件并上传到 hdfs;
su hadoop
tar -xf oozie-examples.tar.gz
hadoop fs -put examples
说明:
以下示例中参数:
1、$fs 为 HDFS 的访问链接,可以在 EMR 控制台集群详情页通过 集群服务>HDFS>配置管理 中查看 core-site.xml 配置文件 fs.defaultFS 的值。
2、$rm 为 Yarn ResourceManager 的地址,可以在 EMR 控制台集群详情页通过 集群服务>YARN>配置管理 中查看 yarn-site.xml 配置文件,高可用部署下为 yarn.resourcemanager.ha.rm-ids 的值,非高可用部署下为 yarn.resourcemanager.address 的值。
3、$hs2_ip 为 HiveSever2 服务部署节点的内网 ip,可以在集群详情页中 集群服务>HIVE>角色管理 中查看。
4、$oozie_server_ip 为 Oozie 服务部署节点的内网 ip,可以在集群详情页中 集群服务>OOZIE>角色管理 中查看。
5、$job 为提交 Oozie Job 后返回的 id。

Hive 任务示例

示例文件 ./examples/apps/hive2 下 job.properties 为 Hive 示例任务的配置文件,根据实际情况修改该文件中的 HDFS 和 YARN 地址、HiveServer2 地址等:
nameNode=$fs
resourceManager=$rm
queueName=default
jdbcURL=jdbc:hive2://$hs2_ip:7001/default
examplesRoot=examples
提交 Oozie job:
oozie job -debug -oozie http://$oozie_server_ip:12000/oozie -config examples/apps/hive2/job.properties -run
可以执行以下命令或访问 Oozie web ui 查看 job 运行信息。
oozie job -info $job

Spark 任务示例

示例文件 ./examples/apps/spark 下 job.properties 为 Spark 示例任务的配置文件,根据实际情况修改该文件中的 HDFS 和 YARN 地址等:
nameNode=$fs
resourceManager=$rm
master=local[*]
mode=client
queueName=default
examplesRoot=examples
oozie.use.system.libpath=true
提交 Oozie job:
oozie job -debug -oozie http://$oozie_server_ip:12000/oozie -config examples/apps/spark/job.properties -run
可以执行以下命令或访问 Oozie web ui 查看 job 运行信息。
oozie job -info $job