Oozie介绍

来源:互联网 发布:数控软件手机版 编辑:程序博客网 时间:2024/06/08 11:05

1. Hadoop常见调度框架:

(1)Linux Crontab:
Linux自带的任务调度计划,在任务比较少的情况下,可以使用这种方式,直接执行脚本,例如添加一个执行计划: 0 12 * hive -f xxx.sql
(2)Azkaban:
(3)Oozie:Cloudera公司开源
(4)Zeus:阿里开源。

Oozie是管理Hadoop作业的工作流调度系统。Oozie定义了控制流节点和动作节点。Oozie实现的功能:
(1)Workflow:顺序执行流程节点;
(2)Coordinator:定时触发workflow;
(3)Bundle Job:绑定多个Coordinator。
Work Flow流程图:


work flow.png


Coordinator生命周期:


coordinator.png


Bundle:


Bundle.png

2. Oozie安装:

Oozie不需要设置OOZIE_HOME环境变量(系统自行计算),推荐使用单独的用户(而不是root)来安装Oozie。

1.编译源码,解压压缩包:

官方文档

如果需要对Oozie个性化修改,可以自行修改源代码并编译,这里我直接使用官网编译好的版本oozie-4.0.0-cdh5.3.6.tar.gz:

$ tar zxf oozie-4.0.0-cdh5.3.6.tar.gz -C /opt/modules/

以下配置添加到core-site.xml文件(使用用户和hostname替换文档中内容):
$HADOOP_HOME/etc/hadoop/core-site.xml:

<!-- OOZIE --><property>    <name>hadoop.proxyuser.natty.hosts</name>    <value>hadoop-senior01.pmpa.com</value></property><property>    <name>hadoop.proxyuser.natty.groups</name>    <value>*</value></property>

修改oozie配置文件,$OOZIE_HOME/conf/oozie-site.xml:

<property>    <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>    <value>*=/opt/modules/hadoop-2.5.0-cdh5.3.6/etc/hadoop</value>    <description>        Comma separated AUTHORITY=HADOOP_CONF_DIR, where AUTHORITY is the HOST:PORT of        the Hadoop service (JobTracker, HDFS). The wildcard '*' configuration is        used when there is no exact match for an authority. The HADOOP_CONF_DIR contains        the relevant Hadoop *-site.xml files. If the path is relative is looked within        the Oozie configuration directory; though the path can be absolute (i.e. to point        to Hadoop client conf/ directories in the local filesystem.    </description></property>

在解压oozie二进制发行包的目录,解压hadooplibs发行包,也就是oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz

$ tar zxf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C /opt/modules/

这样,oozie的安装目录多了一个hadooplibs目录。

2.详细配置:

启动应该使用oozied.sh脚本,并添加,start、stop、run等参数。
在oozie的解压目录下创建libext目录。并将hadooplibs下的jar包拷贝到这个目录里,需要注意的是hadooplibs目录下有个文件夹hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6,hadooplib-2.5.0-mr1-cdh5.3.6.oozie-4.0.0-cdh5.3.6;后者对应于mapreduce1,所以我们拷贝第一个文件夹下的jar包即可。
拷贝extjs的压缩包到libext目录。

$ mkdir libext$ cp hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/* libext/$ cp ext-2.2.zip /opt/modules/oozie-4.0.0-cdh5.3.6/libext/

安装mysql数据库,并生成相关表(oozie是一个web系统,需要自己的知识库),所以,我们需要mysql connector驱动包,拷贝到$oozie_home/libext下。

$ cp mysql-connector-java-5.1.27-bin.jar /opt/modules/oozie-4.0.0-cdh5.3.6/libext/

(1)生成mysql数据表(oozie所需要的)。
我们可以使用 bin/oozie-setup.sh命令的“db create”参数,来操作mysql数据库创建相应的库和表。但在使用这个命令前,需要先给oozie关联上mysql。下面先做关联操作:
修改oozie的配置文件($oozie_home/conf/oozie-site.xml),配置driver、url、username、password:

    <!-- Oozie Related Mysql -->    <property>        <name>oozie.service.JPAService.jdbc.driver</name>        <value>com.mysql.jdbc.Driver</value>    </property>    <property>        <name>oozie.service.JPAService.jdbc.url</name>        <value>jdbc:mysql://hadoop-senior01.pmpa.com:3306/oozie?createDatabaseIfNotExist=true</value>    </property>    <property>        <name>oozie.service.JPAService.jdbc.username</name>        <value>root</value>    </property>    <property>        <name>oozie.service.JPAService.jdbc.password</name>        <value>123456</value>    </property>

(2)关联好mysql之后,通过脚本创建mysql的库表:

$ bin/oozie-setup.sh db create -run oozie.sql

执行成功之后,登陆到mysql验证数据库表的创建情况:

mysql> show tables;+------------------------+| Tables_in_oozie        |+------------------------+| BUNDLE_ACTIONS         || BUNDLE_JOBS            || COORD_ACTIONS          || COORD_JOBS             || OOZIE_SYS              || OPENJPA_SEQUENCE_TABLE || SLA_EVENTS             || SLA_REGISTRATION       || SLA_SUMMARY            || VALIDATE_CONN          || WF_ACTIONS             || WF_JOBS                |+------------------------+12 rows in set (0.00 sec)

(3)下面生成war包,供tomcat访问:

$ bin/oozie-setup.sh prepare-war

命令执行成功后,会提示war包已经生成在webapps目录下:New Oozie WAR file with added 'ExtJS library, JARs' at /opt/modules/oozie-4.0.0-cdh5.3.6/oozie-server/webapps/oozie.war
(4)上传sharelib压缩包到HDFS上:
在$oozie_home下,有2个sharelib压缩包,分别是oozie-sharelib-4.0.0-cdh5.3.6.tar.gz 和 oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz,很明显,我们必须拷贝第二个带yarn的压缩包(前边的是1.0版本的,不带yarn的)。

$ bin/oozie-setup.sh sharelib create -fs hdfs://hadoop-senior01.pmpa.com:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz

3.启动oozie和测试:

启动oozie,使用oozied.sh脚本。

$ bin/oozied.sh start

启动后,访问网址http://hadoop-senior01.pmpa.com:11000/oozie/
可以看到oozie的主页面:


oozie的主页面.png

3. Oozie测试和使用:

1.执行官方example实例:

Oozie官方提供了一个样例包,我们后边的开发都以这个example实例为模板进行。解压Oozie主目录下的example包:

$ tar zxf oozie-examples.tar.gz $ cd examples/apps

apps目录下存放了我们需要配置的作业内容。


apps目录内容.png


在目录中可以看到,有关于map-reduce、sqoop、hive等很多类型的作业的配置的实例。下面,我以map-reduce作业为例来说明,oozie作业的配置方法。在map-reduce目录中有三个重要的内容:
(1)job.properties:定义job相关的属性,比如输入输出目录、namenode节点等。定义了workflow.xml文件的位置。
(2)workflow.xml:定义工作流相关的配置,start 、 end 、kill等
(3)lib文件夹:存放job任务需要的jar包。
注意:配置作业需要修改job.properties和workflow.xml两个文件。
配置job.properties:

nameNode=hdfs://hadoop-senior01.pmpa.com:8020jobTracker=hadoop-senior02.pmpa.com:8032queueName=defaultexamplesRoot=examplesuser.name=nattyoozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce/workflow.xmloutputDir=map-reduce

jobTracker配置的是ResourceManager的端口。需要一定注意,我们的ResourceManager配置在senior02主机上,并且端口是8032(不是8088,8088端口是web界面查看的端口)
配置workflow.xml:

<workflow-app xmlns="uri:oozie:workflow:0.2" name="map-reduce-wf">    <start to="mr-node"/>    <action name="mr-node">        <map-reduce>            <job-tracker>${jobTracker}</job-tracker>            <name-node>${nameNode}</name-node>            <prepare>                <delete path="${nameNode}/user/natty/${examplesRoot}/output-data/${outputDir}"/>            </prepare>            <configuration>                <property>                    <name>mapred.job.queue.name</name>                    <value>${queueName}</value>                </property>                <property>                    <name>mapred.mapper.class</name>                    <value>org.apache.oozie.example.SampleMapper</value>                </property>                <property>                    <name>mapred.reducer.class</name>                    <value>org.apache.oozie.example.SampleReducer</value>                </property>                <property>                    <name>mapred.map.tasks</name>                    <value>1</value>                </property>                <property>                    <name>mapred.input.dir</name>                    <value>/user/natty/${examplesRoot}/input-data/text</value>                </property>                <property>                    <name>mapred.output.dir</name>                    <value>/user/natty/${examplesRoot}/output-data/${outputDir}</value>                </property>            </configuration>        </map-reduce>        <ok to="end"/>        <error to="fail"/>    </action>    <kill name="fail">        <message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>    </kill>    <end name="end"/></workflow-app>

上传examples目录到 HDFS的/user/natty/路径。

$ /opt/modules/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -put examples/ /user/natty/

运行example应用:

$ bin/oozie job -oozie http://hadoop-senior01.pmpa.com:11000/oozie -config examples/apps/map-reduce/job.properties -run

杀掉job:

$ bin/oozie job -oozie http://hadoop-senior01.pmpa.com:11000/oozie -kill 0000000-170423000216782-oozie-natt-W

请注意,在执行应用前,要保证oozie是启动状态的。

参考:

http://blog.csdn.net/renyp8799/article/details/17037989
http://blog.csdn.net/mafuli007/article/details/17071519
 
关于oozie的FAQ参考网址:
https://github.com/yahoo/oozie/wiki/FAQ
http://www.infoq.com/cn/articles/introductionOozie
http://www.myexception.cn/h/1363658.html
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 学信网手机号换了密码忘了怎么办 学信网手机号换了密码也忘了怎么办 学信网上学习形式是星号怎么办 新手机号已被注册微店买家怎么办 微信号被冻结了里面的钱怎么办 不懂公司产品却要接待老外怎么办 上菜时发现桌面摆不下新菜怎么办 超市买到过期产品商家不赔尝怎么办 皇帝成长计划2俘虏的士兵怎么办 晚上楼上有挪桌子的声音怎么办 金灶茶具出故障码e7怎么办 起亚k2灯泡掉进大灯总成怎么办 衣服上拆过线的针孔怎么办 驾考科目二坡道定点熄火怎么办 穿着超短裤感觉要漏屁股怎么办 台式电脑开机后无法进入系统怎么办 产后两年了肚子肥胖松弛怎么办 在作文中写上自己的名字怎么办 外出玩耍时迷路了你会怎么办 外出玩耍时孩子总喜欢乱跑怎么办? 如果真的物价高的受不了怎么办 每晚要5次真的受不了怎么办 五年级的学生钢笔字写不好怎么办 全麻醉药过后让人产生幻觉怎么办? 网贷小象优品上被别人冒用了怎么办 当你和老人产生冲突时该怎么办 百度网盘会员到期后容量怎么办 一个人不停的给你发视频聊天怎么办 被谋杀后的身后事应该怎么办 社保交了五年被单位辞退怎么办 桅子花叶子变黄叶杆蔫怎么办 薄荷养的都黄了干掉了怎么办 被烟草局没收的烟要是假烟怎么办 干了10年工程不想干了怎么办 在服务行业当服务员干不下去怎么办 高中生晚上偷着跑出去玩怎么办 货车高速忘记过安全检查站了怎么办 u盘上的文件名称乱码了怎么办 暖气管掉进去一点水泥渣怎么办 暗埋在瓷砖下的暖气管漏水怎么办 埋在瓷砖下面的水管漏水怎么办