更新时间:2023-03-17 GMT+08:00

Oozie基本原理

Oozie简介

Oozie是一个基于工作流引擎的开源框架,它能够提供对Hadoop作业的任务调度与协调。

Oozie结构

Oozie引擎是一个Web App应用,默认集成到Tomcat中,采用pg数据库。

基于Ext提供WEB Console,该Console仅提供对Oozie工作流的查看和监控功能。通过Oozie对外提REST方式的WS接口,Oozie client通过该接口控制(启动、停止等操作)Workflow流程,从而编排、运行Hadoop MapReduce任务,如图1所示。

图1 Oozie框架

图1中各部分的功能说明如表1所示。

表1 结构图说明

名称

描述

Console

提供对Oozie流程的查看和监控功能。

Client

通过接口控制workflow流程:可以执行提交流程,启动流程,运行流程,终止流程,恢复流程等操作。

SDK

软件开发工具包SDK(SoftwareDevelopmentKit)是被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。

Database

pg数据库。

WebApp(Oozie)

WebApp(Oozie)即Oozie server,可以用内置的Tomcat容器,也可以用外部的,记录的信息比如日志等放在pg数据库中。

Tomcat

Tomcat服务器是免费的开放源代码的Web应用服务器。

Hadoop组件

底层执行Oozie编排流程的各个组件,包括MapReduce、Hive等。

Oozie原理

Oozie是一个工作流引擎服务器,用于运行MapReduce任务工作流。同时Oozie还是一个Java Web程序,运行在Tomcat容器中。

Oozie工作流通过HPDL(一种通过XML自定义处理的语言,类似JBOSS JBPM的JPDL)来构造。包含“Control Node”(可控制的工作流节点)、“Action Node”。

  • “Control Node”用于控制工作流的编排,如“start”(开始)、“end”(关闭)、“error”(异常场景)、“decision”(选择)、“fork”(并行)、“join”(合并)等。
  • Oozie工作流中拥有多个“Action Node”,如MapReuce、Java等。

    所有的“Action Node”以有向无环图DAG(Direct Acyclic Graph)的模式部署运行。所以在“Action Node”的运行步骤上是有方向的,当上一个“Action Node”运行完成后才能运行下一个“Action Node”。一旦当前“Action Node”完成,远程服务器将回调Oozie的接口,这时Oozie又会以同样的方式执行工作流中的下一个“Action Node”,直到工作流中所有“Action Node”都完成(完成包括失败)。

Oozie工作流提供各种类型的“Action Node”用于支持不同的业务需要,如MapReduce,HDFS,SSH,Java以及Oozie子流程。