11、Oozie 工作流调度技术

版权声明: https://blog.csdn.net/KamRoseLee/article/details/84142791

1.Oozie 简介

Oozie 是一个 Hadoop 作业的工作流调度管理系统。Oozie 工作流(Workflow)是放置在控制依赖 DAG(有向无环图)中的一组动作(Action)集合,控制依赖可确保后续操作在前面的操作已成功完成后才会启动。Oozie 的协调作业(Coordinator)是通过时间(频率)和有效数据来触发当前的 Oozie 工作流。

Oozie 支持多种 Hadoop 作业(包括:HDFS,MapReduce,Hive,StreamingMR,Loader,Spark,Distcp)以及系统类作业(例如 Java 与 Shell)。

Oozie 支持如下三种引擎:

WorkflowEngine 工作流引擎:以 Action 的方式运行工作流 Job,用来执行 Map/Reduce 与 Pig 等 Job。CoordinatorEngine 协调员引擎:基于时间和数据触发器运行工作流(Workflow),它可以定时调度工作流(例如每隔一小时运行一次),也可以在数据可用的时候触发工作流(例如等到输入数据准备好的情况下再启动工作流)。BundleEngine 管道引擎:提供了更高级别的 Oozie 抽象,用户可以批量设置Coordinator 应用,并且能够启动/停止/暂停/恢复/重新运行一组 Coordinator应用,从而提高易用性与灵活性。

Oozie 是一个工作流调度引擎,对各种类型的 Hadoop 作业进行编排与调度。主要应用于以下几种场景:

编排与管理逻辑复杂的多种类型的 Hadoop 作业,按照指定的顺序协同运行基于时间(频率)触发工作流,例如每天/小时执行一次的重复任务或者指定时间执行的任务。基于数据有效性触发工作流,当依赖的 HDFS 数据产生之后才触发下一步动作,可用于数据管道处理。实时监控与管理集群的工作流,快速定位问题;掌握集群的资源使用情况,并根据需要调整工作流的调度,最大化利用集群资源。

2.Oozie 架构

3.作业流基本原理

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

Hue 或其他组件通过 Oozie 提供的 Rest 接口来访问 Oozie 服务。

Rest 请求进入 OozieServer 后,经 filter 和 servlet 的识别,DagEngine 将输入转化成 MapReduce 能识别的数据,提交给 MapReduce 执行。

4.Oozie 的特性

(1) 访问方式多样化:提供可视化作业管理的同时 Oozie 也提供 Rest 接口与Shell 接口,方便与第三方对接。

(2) 查看 Oozie 配置:提供可视化界面查看 Oozie 配置。

(3) 操作方式多样化:对作业,工作流、定时调度,批量调度的启动,暂停,停止,恢复,查看等操作,提高易用性与灵活性。

(4) 安全增强:支持 Oozie 权限管理,提供管理员与普通用户两种角色。支持单点登录登出,HTTPS 方式访问以及审计日志。(5) 可靠性增强:支持 OozieHA。

(6) 可维护性增强:支持告警,日志压缩,健康检查。

5.工作流生命周期

上述各种状态存在相应的转移(工作流程因为某些事件,可能从一个状态跳转到另一个状态),其中合法的状态转移有如下几种,如下表所示:

猜你喜欢

转载自blog.csdn.net/KamRoseLee/article/details/84142791
今日推荐