Apache Oozie 是一个开源的工作流引擎,被设计将 hadoop 生态组件的任务编排成 Workflow,然后对其进行调度、执行、管理。本文通过示例简单介绍如何在 EMR 上使用 Oozie,详细的使用文档可进一步参考社区文档。
前提条件
访问 Oozie WebUI
如果您在购买集群时勾选了开启集群节点外网,可以通过 EMR 控制台 集群服务 单击 WebUI 链接来访问。
对于国内用户,建议将 WebUI 时区设置为 GMT+08:00。
sharelib 的更新
在 EMR 集群中,已安装了 sharelib,所以您使用 Oozie 提交 Workflow 作业时,不需要再安装 sharelib。当然您也可以对 sharelib 进行编辑与更新,操作步骤如下:
cd /usr/local/service/oozietar -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 hadooptar -xf oozie-examples.tar.gzhadoop 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=$fsresourceManager=$rmqueueName=defaultjdbcURL=jdbc:hive2://$hs2_ip:7001/defaultexamplesRoot=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=$fsresourceManager=$rmmaster=local[*]mode=clientqueueName=defaultexamplesRoot=examplesoozie.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