@hadoopMan
2018-01-02T08:36:16.000000Z
字数 3418
阅读 1471
oozie
本节主要内容:
以下几点要着重注意:
1) Hadoop2.x生态系统中常见几种开源的调度框架,各自优势
2) Oozie 工作流调度框架的三大功能及架构
3) 完成Oozie安装部署测试
4) 认真阅读Oozie官方文档,提升英文阅读能力,细节决定成败
Linux调度策略
1,crontab
2,Azkaban
3,oozie
4,Zeus
oozie是一个基于工作流引擎的开源框架,是由Cloudera公司贡献给Apache的,它能够提供对hadoop mapreduce和pig Jobs的任务调度与协调。oozie需要部署到java servlet容器中运行。
同JBoss jBPM提供的jPDL一样,oozie也提供了类似的流程定义语言hPDL,通过XML文件格式来实现流程定义。对于工作流系统,一般都会有很多不同功能的节点,比如分支、并发。汇合等等。
oozie定义了控制流节点(Control Flow Nodes)和动作节点(Action Nodes),其中控制流节点定义了流程的开始和结束,以及控制流程的执行路径(Execution Path),如decision、fork、join等;而动作节点包括 Hadoop mapreduce、hadoop文件系统、pig、SSH、HTTP、eMail和oozie子流程。
下图给出了,wordcount Workflow Example:
workflow – 这种方式最简单,就是定义DAG来执行。
coordinator – 它构建在workflow工作方式之上,提供定时运行和触发运行任务的功能。
bundle – bundle的作用就是将多个coordinator管理起来。这样我们只需要提供一个bundle提交即可。然后可以start/stop/suspend/resume任何coordinator。
Unix (tested in Linux and Mac OS X)
Java 1.6+
Hadoop
Apache Hadoop (tested with 1.0.0 & 0.23.1)
ExtJS library (optional, to enable Oozie webconsole)
ExtJS 2.2
注意: oozie会忽略任何关于 OOZIE_HOME的设置,他自己会计算自己的主目录。
在core-site.xml中添加如下两个配置:
<!-- OOZIE -->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>miaodonghua1.host</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
解压oozie-4.0.0-cdh5.3.6.tar.gz
tar -zxvf oozie-4.0.0-cdh5.3.6.tar.gz -C /opt/cdh2.3.6/
解压oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz与oozie级目录
cd /opt/cdh2.3.6/oozie-4.0.0-cdh5.3.6
tar -zxvf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C ../
在oozie的主目录下创建一个libext目录:
mkdir libext/
拷贝hadooplibs中的对应版本的jars到libext目录下
cp hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/* libext/
拷贝ExtJS library到libext
cp /opt/softwares/ext-2.2.zip libext/
在oozie-site.xml中修改如下内容
<property>
<name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
<value>*=/opt/cdh2.3.6/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>
不配置的话会报如下错误
org.apache.oozie.action.ActionExecutorException: File /user/beifeng/share/lib does
not exist
at org.apache.oozie.action.hadoop.JavaActionExecutor.addSystemShareLibForAc
tion(JavaActionExecutor.java:631)
at org.apache.oozie.action.hadoop.JavaActionExecutor.addAllShareLibs(JavaAc
tionExecutor.java:709)
报错原因:
原因:
没有读取HDFS上的文件,读取的是本地文件系统上的
解决;
配置HDFS文件
第一步:
bin/oozie-setup.sh prepare-war
第二步:
bin/oozie-setup.sh sharelib create \
-fs hdfs://miaodonghua1.host:8020 \
-locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
第三步:
bin/ooziedb.sh create -sqlfile oozie.sql -run DB Connection
start 端口号11000
将oozie启动成守护进程
$ bin/oozied.sh start
将oozie启动为前段进程
$ bin/oozied.sh run
可以使用如下命令来检测oozie的状态:
$ bin/oozie admin -oozie http://localhost:11000/oozie -status
Oozie WorkFlow结构特点
workflow.xml --> 必须要在HDFS上
start
actions
kill
end
job.propertie --> 必须要在本地
属性信息
lib --> 必须要在HDFS上
依赖jar包
首先解压
修改如下内容在mapreduce的job.properties中修改
nameNode=hdfs://miaodonghua1.host:8020
jobTracker=miaodonghua1.host:8021
上传
/opt/cdh2.3.6/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -put examples examples
bin/oozie job -oozie http://miaodonghua1.host:11000/oozie -config examples/apps/map-reduce/job.properties -run