Apache oozie
概述
是一款工作流调度软件, 来自于 cloudera, 后来贡献给 Apache
Oozie 是运行于 Java servlet 容器上的一个 java web 应用
Oozie 的目的是按照 DAG(有向无环图)调度一系列的 Map/Reduce 或者 Hive 等任务
工作流核心
- 依赖执行
- 周期重复执行
适用场景
- 需要按顺序进行一系列任务
- 需要并行处理的任务
- 需要定时、周期触发的任务
- 可视化作业流运行过程
- 运行结果或异常的通报
Oozie 的架构
Oozie Client
- 提供命令行、java api、rest 等方式,对 Oozie 的工作流流程的提交、启动、运行等操作
Oozie WebApp
- 即 Oozie Server,本质是一个 java 应用。可以使用内置的 web 容器,也可以使用外置的 web 容器
- 主要是给用户提供了web页面查看
Hadoop Cluster
- 底层执行 Oozie 编排流程的各个 hadoop 生态圈组件
- oozie是通过启动MapReduce程序来提交各个不同类型任务的
图示
Oozie 基本原理
原理
- Oozie 对工作流的编排,是基于 workflow.xml 文件来完成的
- 用户预先将工作流执行规则定制于 workflow.xml 文件中,并在 job.properties 配置相关的参数,然后由 Oozie Server 向 MR 提交 job 来启动工作流
流程节点
-
Control Flow Nodes
- 控制工作流执行路径
- 包括 start,end,kill,decision,fork,join
-
Action Nodes
- 决定每个操作执行的任务类型
- 包括 MapReduce、java、hive、shell 等
-
图示
Oozie 工作流类型
WorkFlow
-
规则相对简单,不涉及定时、批处理的工作流。顺序执行流程节点
-
图示
Coordinator
-
Coordinator 将多个工作流 Job 组织起来,称为 Coordinator Job,
并指定触发时间和频率,还可以配置数据集、并发数等,
类似于在工作流外部增加了一个协调器来管理这些工作流的工作流 Job 的运行 -
图示
Bundle
-
针对 coordinator 的批处理工作流
Bundle 将多个 Coordinator 管理起来,只需要一个 Bundle 提交即可 -
图示
Apache Oozie 安装
修改 hadoop 相关配置
-
配置 httpfs 服务
修改 hadoop 的配置文件 core-site.xml-
<name>hadoop.proxyuser.root.hosts</name>
-
<value>*</value>
-
<name>hadoop.proxyuser.root.groups</name>
-
<value>*</value>
-
配置 jobhistory 服务
修改 hadoop 的配置文件 mapred-site.xml-
<name>mapreduce.jobhistory.address</name>
-
<value>node-1:10020</value>
-
<description>MapReduce JobHistory Server IPC host:port</description>
-
<name>mapreduce.jobhistory.