Oozie

为什么要有Oozie?

在数据业务场景,对于数据的处理往往是分阶段处理,而不同的阶段可能采用了不同的技术框架去完成这个业务需求,且可能在不同的阶段要干不同的事。

炒饭(锅) à 吃饭(碗) à 筷子(动手)

要吃饭就要等炒饭先用锅炒好,要用筷子动手吃饭就要等碗里装了饭,这是一个流水线式的过程,如果用设定时间的方式,到了什么时候就拿完去装饭,但如果今天兼职的人特别多,那么炒的饭必然就多了,时间也长了,但是设定时间到了,还没炒好,可是有一堆人挤在厨房喊要饭,问题就出现了。

于是有的人会想,如果有一个监督人帮我去这个监控、通知、控制好整个流程,那样多好啊,厨房就不会给天天催了,也不会发生拥挤的情况。

      小结:一个完整的数据分析系统通常是由大量的任务单元组成,Shell脚本、Java程序、MapReduce程序、Hive脚本等等,各个任务单元之间存在时间先后及前后依赖关系。

      为了很好的组织这样的复杂执行计划,需要一个工作流调度系统来调用执行。

      简单的工作流调度:Liunx的crontab来定义

      复杂的工作流调度:Oozie、Azakaban等。。。



主流几款工作流调度框架

特性HamakeOozieAzkabanCascading

工作流描述语言XMLXML (xPDL based)text file with key/value  pairsJava API

依赖机制data-drivenexplicitexplicitexplicit

是否要web容器NoYesYesNo

进度跟踪console/log messagesweb pageweb pageJava API

Hadoop job调度支持noyesyesyes

运行模式command line utilitydaemondaemonAPI

Pig支持yesyesyesyes

事件通知nononoyes

需要安装noyesyesno

支持的hadoop版本0.18+0.20+currently unknown0.18+

重试支持noworkflownode  evelyesyes

运行任意命令yesyesyesyes

Amazon EMR支持yesnocurrently unknownyes



什么是Oozie?

      Oozie(驯象人)是一个基于工作流引擎的开源框架,由Cloudera公司贡献给Apache的,用在一个工作流内以一个特定顺序运行一组工作或流程。

      Oozie在集群中扮演的是定时调度任务,多任务,并开源按照业务逻辑顺序调度。



组成

Workflow顺序执行流程节点,执行分支多节点或合并多分点为一个分支。

Coordinator定时触发Workflow

BundleJob绑定多个Coordinator


Oozie节点

      控制流节点(Control Flow Nodes):一般都是定义在工作流开始或结束,比如start、end、kill等,以及提供工作流的执行路径。

      动作节点(Action Nodes):执行具体动作的节点。



案例

job.properties

#NameNode地址

nameNode=hdfs://hadoop-senior00-levi.com:8082

#ResourceManager地址,默认端口8032

jobTracker=hadoop-senior00-levi.com:8032

#内部的Event队列名称

queueName=default

examplesRoot=oozie-apps

#程序位置

oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell

#执行这个脚本

EXEC1=test1.sh

EXEC2=test2.sh


workflow.xml

   

   

               

                       ${jobTracker}

                       ${nameNode}

                       

                               

                                       mapred.job.queue.name

                                       ${queueName}



                        ${EXEC1}


                       /user/admin/oozie-apps/shell/${EXEC1}#${EXEC1}


                       


               

               


             

               

                       ${jobTracker}

                       ${nameNode}

                       

                               

                                       mapred.job.queue.name

                                       ${queueName}



                        ${EXEC2}


                       /user/admin/oozie-apps/shell/${EXEC2}#${EXEC2}


                       


               

               


   

       

           

               ${wf:actionData('shell-node')['my_output'] eq 'Hello Oozie'}


           



   

       Shell action failed, errormessage[${wf:errorMessage(wf:lastErrorNode())}]


   

       Incorrect output, expected [Hello Oozie] but was[${wf:actionData('shell-node')['my_output']}]


   



test1.sh

#!/bin/bash

/usr/bin/date > /tmp/test.log

/usr/bin/date > /tmp/test.log


执行:

上传到HDFS:

hdfs dfs -rmr /user/levi/oozie-apps

hdfs dfs -put oozie-apps/ /user/levi


执行任务:

bin/oozie job --ooziehttp://hadoop-senior00-levi.com:11000/oozie -config oozie-apps/shell/job.properties-run























使用注意事项

[if !supportLists]1.    [endif]启动不了,则到oozie-server/temp查看是否有*.pid文件,有就删除后在启动。

[if !supportLists]2.    [endif]如果无法关闭oozie则kill掉。

[if !supportLists]3.    [endif]Mysql配置如果没有生效的话,默认使用derby数据库

[if !supportLists]4.    [endif]在本地修改完成的job配置,必须重新上传到HDFS。

[if !supportLists]5.    [endif]Linux用户名和Hadoop的用户名不一致。

[if !supportLists]6.    [endif]时区

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