Hadoop数据分析平台实战——180Oozie工作流使用介绍

离线数据分析平台实战——180Oozie工作流使用介绍

Oozie工作流介绍

Oozie的四大组件服务分别是: workflow, coordinator, bundle和sla。
其中sla是作为监控服务协议的一个组件,
workflow定义oozie的基本工作流,
coordinator定义定时(或者是根据其他资源指标)运行的workflow任务,
bundle是将多个coordinator作为一个组件一起管理。
也就是说workflow是oozie中最基本的一个服务组件。
三大服务的的关系是:bundle包含多个coordinator,coordinator包含一个workflow,workflow定义具体的action动作。

Workflow介绍

workflow使用hadoop流程定义语言(Hadoop Process Defination Language, hPDL)来描述工作流,
hPDL是类似xml语言的一种相当简洁的定义类语言,使用有限数目的流控制节点和动作节点来描述workflow,也就是workflow有两大类节点构成:工作流控制节点和动作节点。
其中工作流控制节点是workflow本身提供的一种控制workflow工作流执行路径的方法,不可以自定义;动作节点是具体的操作方法,用户可以自定义。

Workflow工作流生命周期

状态 含义说明
PREP 一个工作流第一次创建就出于PREP状态,表示工作流以及创建但是还没有运行。
RUNNING 当一个已经被创建的工作流Job开始执行的时候,就处于RUNNING状态。它不会达到结束状态,只能因为出错而结束,或者被挂起。
SUSPENDED 一个RUNNING状态的工作流Job会变成SUSPENDED状态,而且它会一直处于该状态,除非这个工作流Job被重新开始执行或者被杀死。
SUCCEEDED 一个RUNNING状态的工作流Job会变成SUSPENDED状态,而且它会一直处于该状态,除非这个工作流Job被重新开始执行或者被杀死。
KILLED 当一个工作流Job处于被创建后的状态,或者处于RUNNING、SUSPENDED状态时,被杀死,则工作流Job的状态变为KILLED状态。
FAILED 当一个工作流Job处于被创建后的状态,或者处于RUNNING、SUSPENDED状态时,被杀死,则工作流Job的状态变为KILLED状态。

Workflow工作流状态转换图

转换前状态 转换后状态集合
未启动 PREP
PREP RUNNING、KILLED
RUNNING SUSPENDED、KILLED、SUCCEEDED、FAILED
SUSPENDED RUNNING、KILLED

Workflow流控制节点

流控制节点 XML元素类型 描述
Start节点 start 该节点定义一个oozie workflow的起始节点,一个workflow只能有且只有一个start节点。
End节点 end 定义一个workflow的结束节点。
Decision节点 decision 该节点用于描述"switch-case"逻辑
Fork节点 fork 该节点会将多个执行流程分为多个并非操作。
Join节点 join 等待前面的fork节点指定的所有action完成。
Sub-workflow节点 sub-workflow 该节点会调用一个子workflow
Kill节点 kill 该节点会是oozie服务器杀死当前的workflow作业

Workflow默认支持的action动作

动作节点 XMl元素类型 描述 类型
Java动作 java 该动作调用一个java类的main方法 异步
Pig动作 pig 该动作调用一个Pig作业 异步
Mapreduce动作 map-reduce 该动作会运行一个mapreduce作业,可以是java的mapreduce作业,也可以是streaming作业和pipe作业 异步
Hdfs动作 fs 该动作运行定义给一个在HDFS上执行的命令(delete、mkdir、move 和chmod等)序列 同步

Workflow扩展action动作

动作节点 XML元素类型 描述 类型
Hive动作 hive 运行一个hive作业 异步
Shell动作 shell 运行一个shell作业 同步
Email动作 email 发送一个email邮件 同步
SSH动作 ssh 调用oozie服务器上的指定shell脚本 同步
Sqoop动作 sqoop 运行一个sqoop作业 异步
Distcp动作 distcp 该动作运行一个分布式复制作业 异步

Workflow异步操作

Workflow中的所有异步操作(action)都需要在hadoop集群上以mapreduce作业的方式进行执行,这样充分利用了集群的优点。
oozie通过两种方式来检查任务是否完成:

  1. 回调:当一个任务和一个计算被启动后,会为任务提供一个回调url,该任务执行完成后,会执行回调开通知oozie。
  2. 轮询:在任务执行回调失败的情况下,无论任何原因,都支持以轮询的方式进行查询。
    oozie提供这两种方式来控制任务,将资源密集型的任务放到服务节点之外,使oozie节约服务器资源,确保单个oozie服务器可以支持上千个作业。

注意: 需要hadoop集群开启hdfs、yarn和jobhistory服务。

Workflow规则

workflow任务主要由job.properties、workflow.xml和其他动作需要的资源文件三部分组成,其中job.properties中定义workflow作业的配置信息,workflow.xml定义作业的执行工作流。workflow.xml文件是一个有定义规则的xml文件。
workflow.xml配置规则详见:..\文档\workflow.template.xml
job.properties配置参考:..\文档\job.template.properties

Workflow案例介绍

  1. 定义fs动作,在hdfs文件系统上进行文件操作。
  2. 定义fs动作,判断文件夹存在,就删除,如果不存在,不进行任何操作。
  3. 定义shell动作,在服务器的tmp目录下创建一个文件夹。
  4. 定义hive动作,执行sql脚本,将数据导入到hive中的表中。
  5. 定义mapreduce动作,执行mapreduce任务。
    执行命令:oozie job -oozie http://hh:11000/oozie -config xxx/job.properties -run

Coordinator介绍

coordinator支持workflow过程的自动启动,常用于一些由时间/数据可用性来触发的、会多次调用的workflow过程的设计和执行。通过定义多个顺序运行的、前一个输出作为后一个输入的workflow,coordinator也支持定义常规运行的(包括以不同时间间隔运行的)workflow作业之间的依赖。

案例:编写一个每两分钟执行一次的workflow(也就是coordinator)任务。

Bundle介绍

Oozie Bundle是顶层抽象,允许将一组coordinator任务打包成为一个bundle任务。
组成一个整体bundle的多个coordinator可以作为一个整体来进行控制,包括启动、停止、挂起、继续、重新执行等操作。
Bundle中不支持它的coordinator应用程序之间的显示依赖关系,如果需要定义这些依赖关系,可以在 coordinator中通过输入输出事件来指定依赖。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容