大数据组件之Apache Oozie

时间:2023-02-19 14:02:12

1、Oozie介绍

官网首页介绍:​​http://oozie.apache.org​

大数据组件之Apache Oozie

1.1 Oozie是一个管理 Apache Hadoop 作业的工作流调度系统。

1.2 Oozie的 workflow jobs 是由 actions 组成的 有向无环图(DAG)。

1.3 Oozie的 coordinator jobs 是由时间 (频率)和数据可用性触发的重复的 workflow jobs 。

1.4 Oozie与Hadoop生态圈的其他部分集成在一起,支持多种类型的Hadoop作业(如Java map-reduce、流式map-reduce、Pig、Hive、Sqoop和Distcp)以及特定于系统的工作(如ava程序和shell脚本)。

1.5Oozie是一个可伸缩、可靠和可扩展的系统。


2、对比选型

简单项目的话可以用crontab来做控制,但是项目比较复杂的话会发现还是有很多不方便的,比如失败重启和日志查看等问题,所以我们通常在Azkaban和oozie之间做对比,选择适合自己公司或者项目的任务调度工具

  • 执行方式:Oozie底层在提交Hadoop Spark作业而Azkaban是直接操作shell语句。
  • 工作流定义: Oozie是通过xml定义的而Azkaban为properties来定义。
  • 部署过程: Oozie的部署相对困难些,同时它是从Yarn上拉任务日志。
  • 任务检测: Azkaban中如果有任务出现失败,只要进程有效执行,那么任务就算执行成功,这是BUG,但是Oozie能有效的检测任务的成功与失败。
  • 操作工作流: Azkaban使用Web操作。Oozie支持Web,RestApi,Java API操作。
  • 权限控制: Oozie基本无权限控制,Azkaban有较完善的权限控制,供用户对工作流读写执行操作。
  • 运行环境: Oozie的action主要运行在hadoop中而Azkaban的actions运行在Azkaban的服务器中。
  • 记录workflow的状态: Azkaban将正在执行的workflow状态保存在内存中,Oozie将其保存在Mysql中。
  • 出现失败的情况: Azkaban会丢失所有的工作流,但是Oozie可以在继续失败的工作流运行

两者在功能方面大致相同,在安全性上可能Oozie会比较好,加之我们选择了CDH作为大数据平台,所以就用了其自带的oozie工具,且有相应的可视化操作工具hue配套使用,较为便捷。

3、Oozie的架构:

大数据组件之Apache Oozie


3.1 Oozie client: 提供命令行,java  api  rest 等方式,对oozie的工作流程的提交,启动,运行等操作。

3.2 Oozie WebApp: 即oozie Server 本质是一个java应用,可以使用内置的web容器,也可以使用外置的web容器。

3.3 hadoop Cluster: 底层执行oozie编排流程的各个Hadoop生态圈组件。

4、Oozie基本原理:

  oozie对工作流的编排,是基于workflow.xml 文件来完成的。用户预先将工作流执行规则定制与workflow.xml文件中,并在job.properties配置相关的参数,然后由oozie server向MR提交job来启动工作流。

4.1 流程节点:

工作流由两种类型的节点组成,分别是:

4.1.1 Control Flow Nodes: 控制工作流执行路径,包括start ,end,kill,decision,fork,join。

4.1.2 Action Nodes: 决定每个操作执行的任务类型,包括MapReduce,java,hive,shell等。

大数据组件之Apache Oozie

4.2 Oozie工作流类型:

4.2.1 workflow:

     规则相对简单,不涉及定时,批处理的工作流,顺序执行流程节点。workflow有个大缺点:没有定时和条件出发功能。

4.2.2 Coordinator:

      coordinator将多个工作流job组织起来,称为Coordinator job ,并指定触发时间和频率,还可以配置数据集,并发数等,类似于在工作流外部增加了一个协调器来管理这些工作流的工作流job的运行。

大数据组件之Apache Oozie


4.2.3 Bundle:

        针对coordinator  的批处理工作流,Bunndle将多个Coordinator管理起来,这这样我们只需要一个Bundle提交即可。