一、Oozie简介

Oozie英文翻译为:驯象人。一个基于工作流引擎的开源框架,由Cloudera公司贡献给Apache,提供对Hadoop Mapreduce、Pig Jobs的任务调度与协调。Oozie需要部署到Java Servlet容器中运行。主要用于定时调度任务,多任务可以按照执行的逻辑顺序调度。

二、Oozie的功能模块介绍

2.1、模块

1) Workflow

顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个)

2) Coordinator

定时触发workflow

3) Bundle Job

绑定多个Coordinator

2.2、常用节点

1) 控制流节点(Control Flow Nodes

控制流节点一般都是定义在工作流开始或者结束的位置,比如start,end,kill等。以及提供工作流的执行路径机制,如decision,fork,join等。

2) 动作节点(Action  Nodes

负责执行具体动作的节点,比如:拷贝文件,执行某个Shell脚本等等。

三、Oozie的部署

3.1、部署

3.1.1、解压Oozie

$ tar -zxf ~/softwares/installations/cdh/oozie-4.0.0-cdh5.3.6.tar.gz -C ./

 

3.1.2、修改Hadoop配置(原来学习的基础上添加如下内容)

core-site.xml

<!-- Oozie Server的Hostname -->
<property>
<name>hadoop.proxyuser.admin.hosts</name>
<value>*</value>
</property>

<!-- 允许被Oozie代理的用户组 -->
<property>
<name>hadoop.proxyuser.admin.groups</name>
<value>*</value>
</property>

尖叫提示:hadoop.proxyuser.admin.hosts类似属性中的admin用户替换成你的hadoop用户。

mapred-site.xml

<!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>linux01:10020</value>
</property>

<!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>linux01:19888</value>
</property>

yarn-site.xml

<!-- 任务历史服务 -->

<property>

       <name>yarn.log.server.url</name>

       <value>http://linux01:19888/jobhistory/logs/</value>

</property>

完成后:记得scp同步到其他机器节点

3.1.3、重启Hadoop集群

$ sh ~/start-cluster.sh

尖叫提示:需要开启JobHistoryServer, 最好执行一个MR任务进行测试。

3.1.4、在oozie根目录下解压hadooplibs

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

完成后Oozie目录下会出现hadooplibs目录。

3.1.5、在Oozie根目录下创建libext目录

$ mkdir libext/

3.1.6、拷贝一些依赖的Jar包

1) 将hadooplibs里面的jar包,拷贝到libext目录下:

$ cp -ra hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/* libext/

2) 拷贝Mysql驱动包到libext目录下:

$ cp -a ~/softwares/installations/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar libext/

3.1.7、将ext-2.2.zip拷贝到libext/目录下

ext是一个js框架,用于展示oozie前端页面:

$ cp -a ~/softwares/installations/cdh/ext-2.2.zip libext/

3.1.8、修改Oozie配置文件

oozie-site.xml

属性:oozie.service.JPAService.jdbc.driver
属性值:com.mysql.jdbc.Driver
解释:JDBC的驱动

属性:oozie.service.JPAService.jdbc.url
属性值:jdbc:mysql://linux01:3306/oozie
解释:oozie所需的数据库地址

属性:oozie.service.JPAService.jdbc.username
属性值:root
解释:数据库用户名

属性:oozie.service.JPAService.jdbc.password
属性值:123456
解释:数据库密码

属性:oozie.service.HadoopAccessorService.hadoop.configurations
属性值:*=/home/admin/modules/cdh/hadoop-2.5.0-cdh5.3.6/etc/hadoop
解释:让Oozie引用Hadoop的配置文件

3.1.9、在Mysql中创建Oozie的数据库

进入Mysql并创建oozie数据库:

$ mysql -uroot -p123456

mysql> create database oozie;

3.1.10、初始化Oozie

1) 上传Oozie目录下的yarn.tar.gz文件到HDFS

尖叫提示:yarn.tar.gz文件会自行解压

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

执行成功之后,去50070检查对应目录有没有文件生成。

2) 创建oozie.sql文件

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

3) 打包项目,生成war

$ bin/oozie-setup.sh prepare-war

3.1.11、启动Oozie服务(附关闭Oozie服务)

$ bin/oozied.sh start

如需正常关闭Oozie服务,请使用:

$ bin/oozied.sh stop

3.1.12、访问Oozie的Web页面

​​http://linux01:11000/oozie​​