Ooize
什么是Ooize
Oozie是一个用于管理Apache Hadoop作业的工作流调度程序系统。
- Oozie Workflow job是由多个Action组成的有向无环图(DAG)。
- Oozie Coordinator job是根据时间(频率)和数据可用性触发的可重复执行的Oozie Workflow job(简单讲就是根据时间或数据条件,规划workflow的执行)。
- Oozie与Hadoop技术栈的项目集成,支持多种类型的Hadoop作业(例如Java map-reduce,Streaming map-reduce,Pig,Hive,Sqoop和Distcp,Spark)以及系统特定的工作(例如Java程序和shell脚本)。
- Oozie是一个可水平扩展,可靠和可使用扩展插件(scalable, reliable and extensible)的系统。
Ooize常见的几个应用场景
1、统一调度hadoop系统中常见的mr任务启动、 hdfs操作、 shell调度、 hive操作等。
2、使得复杂的依赖关系、时间触发、事件触发使用xml语言进行表达,开发效率提高。
3、一组任务使用一个DAG来表示,使用图形表达流程逻辑更加清晰。
4、支持很多种任务调度,能完成大部分hadoop任务处理。
5、程序定义支持EL常量和函数,表达更加丰富。
Oozie的功能模块介绍
模块
- Workflow:顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个)。
- Coordinator:定时触发workflow。
- Bundle:绑定多个Coordinator。
Workflow常用节点
- 控制流节点(Control Flow Nodes):控制流节点一般都是定义在工作流开始或者结束的位置,比如start,end,kill等。以及提供工作流的执行路径机制,如decision,fork,join等。
- 动作节点(Action Nodes):负责执行具体动作的节点,比如:拷贝文件,执行某个Shell脚本等等。
Ooize使用
准备百度智能云环境。
登录控制台,选择“产品服务->MapReduce BMR”,点击“创建集群”,进入集群创建页,并做如下配置:
1. 创建一个bmr2.3.0镜像的集群,选择hue+oozie
用户可以根据需求选择对应的服务,选择完成后填写集群的基础信息和实例规格,点击购买即可,建议选择新建高可用集群。
2.使用Ooize调度作业
1.命令行调度
1.1本地创建任务文件夹(比如 hive),编写 hive/job.properties
vim hive/job.properties
将配置中host改为所在集群机器host
nameNode=hdfs://master-22c8a0f:8020
resourceManager=master-22c8a0f:8050
queueName=default
jdbcURL=jdbc:hive2://master-22c8a0f:10000/default
examplesRoot=examples
oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/hive
1.2 编写 workflow.xml
script 填写sql文件名称
1.3 编写任务脚本
vim hive/show.q
create database hivetest;
create table hivetest.student(id int, name string, age int) row format delimited fields terminated by ',' STORED AS TEXTFILE;
insert into hivetest.student values(1, 'name1', 12);
1.4上传文件夹到 job.properties 中 oozie.wf.application.path 指定的 hdfs 路径
hdfs dfs -put -f hive/ /user/hdfs/examples/apps/
1.5执行命令提交 oozie 任务
/opt/bmr/oozie/bin/oozie job -oozie http://{oozie-server eip}:11000/oozie -config hive/job.properties -run
提交后会得到 oozie jobId
1.6使用 oozie jobId 可以查看任务运行详情
/opt/bmr/oozie/bin/oozie job -oozie http://{oozie-server eip}:11000/oozie -info 0000079-211118162829239-bmr-oozie-W
2.hue调度
使用 hue 交互式开发 oozie 任务,请参考Hue官方开发示例。
3.访问Ooize URL
1.登录控制台,选择“产品服务->MapReduce BMR”,点击已创建的集群,进入该集群详情页。
2.在“相关应用和工具”栏中可以查看“Ooize Url”。
Ooize Url 默认不可点击,需要在给对应的master实例绑定EIP后并且开通对应的端口后才可以访问。 具体需要绑定EIP的实例ID可以将鼠标指针上浮在Ooize Url 叹号处查看。绑定EIP见绑定EIP。若无EIP,请先于产品【网络——弹性公网IP EIP】创建EIP。详见:创建EIP实例。
3.给BMR安全组添加11000端口访问规则。 在给对应的节点绑定eip后,在集群详情-网络处可以查看对应BMR安全组ID。
复制对应的BMR安全组ID,进入VPC-安全组中,找到对应的BMR安全组。
点击添加规则,选择HTTP,规则类型为IPV4,协议为tcp,端口范围为11000,source建议填写为需要访问BMR集群的IP或者IP段,不建议为all,本示例为方便演示选择all(0.0.0.0/0)。
添加完成后如下图所示:
4.完成上述工作后,在BMR集群详情页面中点击Ooize Url即可访问。