You need to enable JavaScript to run this app.
导航

基础使用

最近更新时间2022.12.21 11:34:52

首次发布时间2022.12.21 11:34:52

Oozie 是一个开源的大数据工作流调度引擎,能够提供对 Hadoop 作业的任务调度与协调。本文介绍如何在火山引擎 E-MapReduce(EMR)上使用 Oozie。

1 前提条件

  1. 适合 EMR 2.x 版本,且要求是 2.1.0 以后的版本(包括 EMR 2.1.0)。详见版本概述

  2. 已创建 EMR 集群,且安装有 Oozie 组件。有两种方式可以安装Oozie组件:

    • 在创建 EMR 集群时,选择 Oozie 作为可选组件。详见创建集群

    • 对已安装 EMR 集群,您可在集群服务列表中添加 Oozie 服务。详见服务管理章节

  3. 集群的访问链接需要 emr-master-1 节点的 ECS ID 实例绑定弹性公网IP。详见绑定公网IP

  4. 需要在集群详情 > 访问链接 > 快速配置服务端口中,给源地址和对应端口添加白名单才可继续访问。

  5. 目前 Oozie 组件以白名单形式向您开放,您可通过提工单的方式,请 EMR 支持人员进行开通。

2 访问 Oozie WebUI

在 EMR 控制台的访问链接页中提供了 Oozie 的 Web UI 链接,点击该链接,您便可访问 Oozie Web UI 界面。对于国内用户,建议将 WebUI 时区设置为 GMT+08:00。

  1. 登录 EMR 控制台

  2. 在左侧导航栏中,进入集群列表 > 集群名称详情 > 访问链接, 点击 Oozie UI 访问链接进入。
    详见访问链接

3 Sharelib 的更新

在 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

4 提交 Workflow

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 任务提交示例。

4.1 MapReuce 任务示例

  1. 修改 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
    

    说明

    • HDFS 的访问链接:从 HDFS 组件服务参数fs.defaultFS中获得
    • YARN ResourceManager 地址:YARN ResourceManager 安装节点。高可用情况下,选择其他一个节点即可

    修改后文件样例:如下:

    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
    
  2. 修改下面命令中 {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
    "
    
  3. 执行命令查看 job 信息。将上个步骤中,job 提交后返回的 id,替换下面的 {job ID}

    su oozie -c '
    oozie job -oozie http://{oozie-server-ip}:11000/oozie -info {job ID}
    '
    
  4. 也可以访问 Oozie web ui 查看 job 运行情况。

4.2 Spark 任务示例

  1. 修改 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
    
  2. 提交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
    '
    
  3. 查看job运行状态:

    su oozie -c '
    oozie job -oozie http://{oozie-server-ip}:11000/oozie -info {job ID}
    '
    

4.3 Hive任务示例

  1. 修改 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 组件服务 > 服务参数

  2. 提交 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
    '
    
  3. 查看 job 运行状态:

    su oozie -c '
    oozie job -oozie http://{oozie-server-ip}:11000/oozie -info {job ID}
    '