功课OOZIE01:Oozie 工作流练习

作业OOZIE01:Oozie 工作流练习

常用的大数据调度框架

目前常用的大数据调度框架:Oozie,Azkaban

  • MapReduce Java、Streaming、HQL、Pig等 

如何对这些框架和作业进行统一管理和调度: 

  • 不同作业之间存在依赖关系(DAG); 
  • 周期性作业 
  • 定时执行的作业 
  • 作业执行状态监控与报警 

多种解决方案: 

  • Crontab 
  • 自己设计调度系统 
  • 直接使用开源系统

对常见作业类型进行调度 

  • MapReduce(Java、Streaming等)作业 
  • Hive作业 
  • Shell …. 

根据需要对作业进行调度 

  • 按周期调度 
  • 定时调度…… 

支持容错与报警

可视化作业流运行过程

作业调度系统的比较

功课OOZIE01:Oozie 工作流练习

Oozie在Hadoop生态系统中的位置

功课OOZIE01:Oozie 工作流练习

Oozie基本概念

作业流由一组行为节点(Hadoop MR作业、Hive作业等)构成,且这些节点通过控制流节点相连 ;

  • 控制流节点定义了工作流的起始与结束,并控制着工作流的执行 路径;
  • 行为节点包含一个计算/处理任务,包括:Hadoop map-reduce, HDFS, Pig, SSH, HTTP, eMail等

Oozie工作流是通过hPDL语言(一种XML过程定 义语言)编写的

Oozie 层次结构

功课OOZIE01:Oozie 工作流练习

Oozie服务器端组件

功课OOZIE01:Oozie 工作流练习

Oozie 功能

Oozie Action

  • 支持Hadoop map-reduce, HDFS, Pig, SSH, HTTP, eMail等;
  • 可设置重试次数。

Oozie 控制流

Coordinator

  • 定期执行一个工作流;
  • 数据准备完毕后执行一个工作流

Oozie 部署测试

1、推荐创建新用户
功课OOZIE01:Oozie 工作流练习
2、上传安装包oozie-4.0.0-cdh5.3.6.tar.gz,并解压
3、 hadoop中配置core-site.xml

<property>
<name>hadoop.proxyuser.jit.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.jit.groups</name>
<value>*</value>
</property>

4、解压

[jit@hadoop0 oozie-4.0.0-cdh5.3.6]$ tar -zxf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C ../

5、 在oozie解压的目录创建libext

[jit@hadoop0 oozie-4.0.0-cdh5.3.6]$ mkdirlibext

6、 复制对应的hadooplibs中的对应hadoop版本的jar包到libext中

[jit@hadoop0 hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6]$ cp -r ./* /opt/cdh/oozie-4.0.0-cdh5.3.6/libext

7、 拷贝ext-2.2.zip到libext中

8、打oozie的war包

[jit@hadoop0 oozie-4.0.0-cdh5.3.6]$ bin/oozie-setup.sh prepare-war

总是报错ext-2.2.zip解压 bad file的错误,后来没办法了解压后上传,再在linux下压缩zip。

New Oozie WAR file with added ‘ExtJS library, JARs’ at /opt/cdh/oozie-4.0.0-cdh5.3.6/oozie-server/webapps/oozie.war

9、运行bin/ooziedb.sh create –sqlfileoozie.sql –run

功课OOZIE01:Oozie 工作流练习
10、运行,上传相关lib
bin/oozie-setup.shsharelib create \
-fs hdfs://hadoop0:9000 \
-locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
功课OOZIE01:Oozie 工作流练习
11、运行oozie,bin/oozied.sh start
功课OOZIE01:Oozie 工作流练习
功课OOZIE01:Oozie 工作流练习
12、运行案例
解压

[jit@hadoop0 oozie-4.0.0-cdh5.3.6]$ tar -zxf oozie-examples.tar.gz

上传examples至hdfs中

[jit@hadoop0 oozie-4.0.0-cdh5.3.6]$ hadoop fs -put examples/ examples

进入examples
功课OOZIE01:Oozie 工作流练习

修改job.properties文件

nameNode=hdfs://hadoop0:9000
jobTracker=hadoop0:8032
queueName=default
examplesRoot=examples

oozie.wf.application.path=${nameNode}/user/jit/${examplesRoot}/apps/map-reduce/workflow.xml
outputDir=map-reduce

删除hdfs上的examples文件夹中的map-reduce

[jit@hadoop0 oozie-4.0.0-cdh5.3.6]$ hdfsdfs -rm -R /user/jit/examples/apps/map-reduce
16/03/20 13:48:57 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 0 minutes, Emptier interval = 0 minutes.
Deleted /user/jit/examples/apps/map-reduce

修改后的进行上传

[jit@hadoop0 oozie-4.0.0-cdh5.3.6]$ hdfsdfs -put /opt/cdh/oozie-4.0.0-cdh5.3.6/examples/apps/map-reduce examples/apps/map-reduce

jps查看是否都启动
设置:

[jit@hadoop0 oozie-4.0.0-cdh5.3.6]$ export OOZIE_URL=http://hadoop0:11000/oozie/

修改配置文件oozie-site.xml

<property>
<name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
<value>*=hadoop-conf</value>
</property>

<property>
<name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
<value>*=/home/jit/cdh356/hadoop-2.5.0-cdh5.3.6/etc/hadoop</value>
</property>

重启oozie服务

bin/oozied.sh start
export OOZIE_URL=http://hadoop0:11000/oozie/                      
bin/oozie job -config examples/apps/map-reduce/job.properties -run

功课OOZIE01:Oozie 工作流练习
功课OOZIE01:Oozie 工作流练习
功课OOZIE01:Oozie 工作流练习
功课OOZIE01:Oozie 工作流练习