开发者学堂课程【Oozie 知识精讲与实战演练: Apache Oozie- 概述架构介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/716/detail/12781
Apache Oozie-- 概述-架构介绍
内容介绍:
一、Oozie 概述
二、Oozie 的架构
三、小结
一、Oozie 概述
1.Oozie 是一个用来管理 Hadoop 生态圈 job 的工作流调度系统,类似于 azkaban,当任务中需要进行顺序执行,周期性定时执行时就可以用 Oozie 满足工作流的配置和调度,由 Cloudera 公司贡献给 Apache,Oozie 是运行于 Java servlet 容器上的一个 java web 应用。
2.Oozie 的目的是按照 DAG (有向无环图,有向指的是有方向,从一个方向开始之后就会一直前进,无环图指的是最终的方向不会回来,绕了一圈回到节点,这叫有环图,Oozie 是无环图,一度向前不会回到最初的位置)在有效无环图 DAG 中可以在各个节点配置相关的任务,不同的类型,不同的模块甚至满足条件执行,不满足不执行,从开始到结束经过流程定义下来,就形成了所谓的工作流的流程,调度一系列的 Map/Reduce 或者 Hive 等任务。
3.Oozie 工作流由 hPDL. (Hadoop Process Definition Language) 定义(这是一种XM 流程定义语言)。
4.适用场景包括:
需要按顺序进行一系列任务,干一件事需要 abc 三步,先 a 再 b 后 c,可以用Oozie 进行完成。需要并行处理的任务。需要定时、周期触发的任务,比如每天凌晨都要做这件事,或者每周,这时使用 Oozie。可视化作业流运行过程;运行结果或异常的通报。
在企业中需要针对任务或者工作进行周期性执行定时执行调度或者按照顺序执行时就可以采用 Oozie 进行使用,Oozie 也是众多工作流软件中最著名的一个,原因是它隶属于 apache 软件基金会得到众多商业公司的发展和维护。
二、Oozie 的架构
1、Oozie Client
(1)Oozie 客户端开放三种客户端方式,cli 命令行,可以在cli敲一个相关的命令满足规则执行,java client 客户端就是 api,通过 java 代码进行调度 Oozie 提交任务,rest api 提供 restful 接口。这三种方式都相当于 Oozie 开放了一个接口,用户可以在上面使用接口进行工作流程的提交启动运行等相应的操作。
(2)提供命令行、java api、rest 等方式,对 Oozie 的工作流流程的提交、启动、运行等操作。
2、Oozie WebApp
即 Oozie Server, 本质是一个 java 应用。需要 web 容器运行,可以使用内置的web 容器,也可以使用外置的 web 容器,通常使用内置的进行运行。本质就是用于接收用户提交的各种工作流程的相关信息,最终保存在数据库中。
3、Hadoop Cluster
(1)底层执行 Oozie 编排流程的各个 hadoop 生态圈组件。
(2)Oozie 工作的核心或者它依赖的核心是 hadoop 集群,配置工作流调度,比如执行 mr 程序,Oozie 本身不会进行 mr 程序的进展,所以不管提交的程序是 hadoop 生态圈中什么样的命令,Oozie 都会启动没有reduce task 的 mr 程序,launcher job 比较特殊,只有 map task 没有 reduce task,在只有 map task 的mr 程序中完成相关任务类型的提交,先提交 mr 程序,再提交 hive 程序,spark程序等,都要完成最终的执行。
三、小结
简单概述,用户通过某种方式配置工作流的流程,进行提交启动,这时启动提交的命令就会传递给 Oozie 的服务器,它把相关的任务提交保存后启动没有 reduce task 的 mr 程序完成最后具体相关类型的启动,因此在项目中最核心的一点是 launcher job,Oozie 并不是自己本身去提交相关类型的文件,相关类型的任务,而是启动 mr 程序进行提交。在搭建Oozie 时要提前保证 hadoop 集群,至少是 hadoop 软件安装成功,这样才可以整合其他的软件。
1、Apache oozie
(1)是一个工作流调度软件本身属于 cloudera 后来贡献给了 apache。Apache 软件基金会是全球最大的软件孵化基地,也是它因为 Apache 才得到全球众多公司众多开发者维护功能变得强大。
(2)oozie 目的根据一个定义 DAG (有向无环图)执行工作流程。有向是指的是有目的有前进的方向,无环是不会回到最初的起点,从开始绕一圈回来是有环。
(3)oozie 本身的配置是一种 xml 格式的配置文件,各种标签配置非常复杂,oozie 跟 hue 配合使用将会很方便。
(4)oozie 特点:顺序执行、周期重复定时、可视化、追踪结果。跟另一款软件azkaban 非常类似,都是根据工作流任务调度。
2、Apache Oozie
(1)Oozie client:主要是提供一种方式给用户进行工作流的提交启动 ( cli javaapi rest )
(2)Oozie server (本身是一个 java web 应用),内置 web 服务器,提交任务的接收,并且需要第三方数据库保存工作流调度,它是一个核心。
(3)Hadoop 生态圈
oozie 各种类型任务提交底层依赖于 mr 程序,首先启动一个没有 reducetak 的mr,通过这个 mr 把各个不同类型的任务提交到具体的集群上执行。