1、Oozie简介
1.1 Oozie是大数据四大协作框架之一——任务调度框架,另外三个分别为数据转换工具Sqoop,文件收集库框架Flume,大数据WEB工具Hue。
1.2 它能够提供对Hadoop MapReduce和Pig Jobs的任务调度与协调。
1.3 Oozie需要部署到Java Servlet容器中运行。
1.4 功能相似的任务调度框架还有Azkaban和Zeus。
2、Oozie三大功能模块
2.1 Oozie主要有三大功能模块构成:
2.1.1 workflow(工作流)--定义job任务执行;
Oozie工作流定义,同JBoss jBPM提供的jPDL一样,也提供了类似的流程定义语言hPDL,通过XML文件格式来实现流程的定义。对于工作流系统,一般都会有很多不同功能的节点,比如分支、并发、汇合等等。
Oozie定义了控制流节点(Control Flow Nodes)和动作节点(Action Nodes),其中控制流节点定义了流程的开始和结束,以及控制流程的执行路径(Execution Path),如decision、fork、join等;而动作节点包括Hadoop map-reduce、Hadoop文件系统、Pig、SSH、HTTP、eMail和Oozie子流程。
oozie本质就是一个作业协调工具(底层原理是通过将xml语言转换成mapreduce程序来做,但只是在集中map端做处理,避免shuffle的过程。)
2.1.1.1 执行workflow之前首先要进行相关配置:
①、job.properties 定义job相关属性以及参数
②、workflow.xml 定义控制流和动作节点
③、lib 存放job任务运行的相关资料文件[jar]
特别注意:
Oozie的工作流必须是一个有向无环图,实际上Oozie就相当于Hadoop的一个客户端,当用户需要执行多个关联的MR任务时,只需要将MR执行顺序写入workflow.xml,然后使用Oozie提交本次任务,Oozie会托管此任务流。
2.1.2 Coordinator:定时触发workflow,周期性执行workflow;
2.1.3 Bundle Job:绑定多个coordinator,一起提交或触发所以coordinator。
3 Oozie Cli命令
注意:使用Oozie之前必须先启动hdfs,yarn和jobhistory,这里jobhistory一开始很容易忘~
3.1 启动任务
oozie job -oozie oozie_url -config job.properties_address -run
3.2 停止任务
oozie job -oozie oozie_url -kill jobId -oozie-oozi -W
3.3 提交任务
oozie job -oozie oozie_url -config job.properties_address -submit
3.4 开始任务
oozie job -oozie oozie_url -config job.properties_address -startJobId -oozie-oozi -W
3.5 查看任务执行情况
oozie job -oozie oozie_url -config job.properties_address -info jobId -oozie-oozi -W