管理 Hadoop 作业的工作流调度系统——Oozie

Posted 研发云

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了管理 Hadoop 作业的工作流调度系统——Oozie相关的知识,希望对你有一定的参考价值。

在 Hadoop 执行任务的过程中

由于一个作业内只有一个 Map

和一个 Reduce 函数

用户往往需要等某个任务执行成功后

才能手动执行第二个任务

若能把多个 Map/Reduce 作业

组合到一个逻辑工作单元中

那就可组成一个工作流

从而自动完成任务调用

——而这就是 Oozie 所能带来的功效

管理 Hadoop 作业的工作流调度系统——Oozie

Oozie 由 Oozie client 和 Oozie Server

这两个组件构成

是一种 Java Web 应用程序

也是管理 Hadoop 作业的工作流调度系统

Oozie Server 运行在 Java servlet 容器中

并且需要使用关系型数据库

来存储调度以下信息:

1、工作流定义

2、当前所运行的工作流实例

(包括实例的状态和变量)

管理 Hadoop 作业的工作流调度系统——Oozie

Oozie 整体服务框架 


Ooize 定义了控制流节点 Control Flow Nodes 操作节点 Action Nodes 。控制流节点除了定义一个工作流何时开始和何时结束(start,end,fail 等),还提供了控制工作流执行路径的机制(decision,fork,join 等)。而操作节点是指能够触发一个计算任务(Computation Task)或者处理任务(Processing Task)执行的节点,包括 Hadoop MapReduce / HDFS / Pig / SSH / HTTP / eMail / Oozie 子流程等,其执行都是远程且异步的,执行结果要么成功要么失败。若是执行失败,Oozie 还提供了一些恢复执行的策略。


Oozie 的三层结构:


Workflow:工作流,用以顺序执行流程节点。Oozie 的工作流必须是一个 DAG(有向无环图)。

管理 Hadoop 作业的工作流调度系统——Oozie


Coordinator:用以定时触发 Workflow,多个 Workflow 可以组成一个 Coordinator,可以把前几个 Workflow 的输出作为后一个 Workflow 的输入,也可以定义 Workflow 的触发条件,来做定时触发。

管理 Hadoop 作业的工作流调度系统——Oozie


Bundle: 是对一堆 Coordinator 的抽象,用以绑定多个 Coordinator。

管理 Hadoop 作业的工作流调度系统——Oozie


如何检测任务是否完成

Oozie 通过两种不同的方式来检测任务是否完成——那就是回调轮询


当 Oozie 启动任务后,它会为任务提供唯一的回调 URL,然后任务会在完成的时候发送通知给特定的 URL。在任务无法触发回调URL的情况下,Oozie 可以对计算或处理任务进行轮询,从而保证任务的完成。当然,Oozie 也可以自定义扩展任务类型。

管理 Hadoop 作业的工作流调度系统——Oozie

长|按|二|维|码|关|注

获取更多产品介绍及业界动态

管理 Hadoop 作业的工作流调度系统——Oozie研发云微信公众号
移动Labs公众号

 研·发·云


以上是关于管理 Hadoop 作业的工作流调度系统——Oozie的主要内容,如果未能解决你的问题,请参考以下文章

YARN-Hadoop集群资源管理系统

hadoop系统原理

美团的Hadoop YARN调度性能优化实践

大数据调度平台分类(Oozie/Azkaban/AirFlow/DolphinScheduler)

Oozie介绍

怎么优化hadoop任务调度算法