oozie4.1.x 介绍

问题

工作中可能需要好几个 MapReduce 作业(job)来协作完成,往往一个job的输出会被当做另一个job的输入来使用,这个时候就涉及到了数据流的处理。

程序员不可能就盯着程序,等一个 job 运行完,再去运行下一个 job

一般的做法就是通过 shell 脚本实现,但是如果涉及到的工作流很复杂(比方说有1,2,3,4四个作业,1的输出作为2 3 4的输入,然后2 3的结果运算之后再和1的结果进行某种运算……最后再输出),就很费时费力的。

解决

oozie,把多个MR作业组合为一个逻辑工作单元(一个工作流),从而自动完成任务调用的工具。

介绍

Oozie是一个工作流调度系统,用于管理 Apache Hadoop 作业

  • 将常见的mr任务启动,hdfs操作,shell调度,hive操作等通过统一的方式进行连贯调度.

  • 将复杂的依赖关系,时间触发,事件触发使用 xml 语言进行表达,提高开发效率.

  • 一组任务使用一个DAG(有向无环图)来表示,图形化的表达,流程逻辑更加清晰.

  • 支持很多种任务调度,能完成大部分的hadoop任务处理.

官网:
https://oozie.apache.org/

任务 和 有向无环图(DAG)

任务本身是一个有向无环图(DAG)

有开始、有方向、有结束,在每个节点上可以配置 任务

fork 标签后面的 MR job 和 Hive job 是 并行执行 的,都成功后通过 join 节点合并

应用场景

  • 按顺序执行一系列任务
  • 并行处理任务
  • 定时执行任务

架构

由 Oozie client 和 Oozie Server两个组件构成

Oozie Server 运行于Java Servlet容器(Tomcat)中的web程序