Oozie框架:
理性认知:
1、Oozie英文翻译
驯象人
2、Oozie简介
一个基于工作流引擎的开源框架,由Cloudera公司贡献给Apache,提供对Hadoop Mapreduce、Pig Jobs的任务调度与协调。
Oozie需要部署到Java Servlet容器中运行。
3、Oozie在集群中扮演的角色
定时调度任务,多任务可以按照执行的逻辑顺序调度。
4、Oozie的功能模块
4.1、Workflow
顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个)
4.2、Coordinator
定时触发workflow
4.3、Bundle Job
绑定多个Coordinator
5、Oozie的节点
5.1、控制流节点(Control Flow Nodes)
控制流节点一般都是定义在工作流开始或者结束的位置,比如start,end,kill等。以及提供工作流的执行路径机制,
如decision,fork,join等。
5.2、动作节点(Action Nodes)
就是执行具体任务动作的节点。
6、Oozie的安装与部署
6.1、解压Oozie
$ tar -zxf /opt/softwares/oozie-4.0.0-cdh5.3.6.tar.gz -C /opt/modules/cdh/
6.2、Hadoop配置文件修改,完成后scp到其他机器节点
6.2.1、core-site.xml
hadoop.proxyuser.admin.hosts
*
<!-- 允许被Oozie代理的用户组 -->
<property>
<name>hadoop.proxyuser.admin.groups</name>
<value>*</value>
</property>
6.2.2、配置JobHistoryServer服务(必须)
mapred-site.xml
<!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop-senior01.itguigu.com:10020</value>
</property>
<!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop-senior01.itguigu.com:19888</value>
</property>
yarn-site.xml
<!-- 任务历史服务 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop-senior01.itguigu.com:19888/jobhistory/logs/</value>
</property>
完成后:记得scp同步到其他机器节点
6.3、开启Hadoop集群
$ sh ~/start-cluster.sh
尖叫提示:需要配合开启JobHistoryServer
最好执行一个MR任务进行测试。
6.4、解压hadooplibs
$ tar -zxf /opt/modules/cdh/oozie-4.0.0-cdh5.3.6/oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C /opt/modules/cdh/
完成后Oozie目录下会出现hadooplibs目录
6.5、在Oozie目录下创建libext目录
$ mkdir libext/
6.6、拷贝一些依赖的Jar包
6.6.1、将hadooplibs里面的jar包,拷贝到libext目录下
$ cp -ra /opt/modules/cdh/oozie-4.0.0-cdh5.3.6/hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/* libext/
6.6.2、拷贝Mysql驱动包到libext目录下
$ cp -a /opt/softwares/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar /opt/modules/cdh/oozie-4.0.0-cdh5.3.6/libext/
6.7、将ext-2.2.zip拷贝到libext/目录下
$ cp /opt/softwares/ext-2.2.zip libext/
6.8、修改Oozie配置文件
6.8.1、oozie-site.xml
** JDBC驱动
oozie.service.JPAService.jdbc.driver
com.mysql.jdbc.Driver
** Mysql的oozie数据库的配置
oozie.service.JPAService.jdbc.url
jdbc:mysql://192.168.122.20:3306/oozie
** 数据库用户名
oozie.service.JPAService.jdbc.username
root
** 数据库密码
oozie.service.JPAService.jdbc.password
123456
** 让Oozie引用Hadoop的配置文件
oozie.service.HadoopAccessorService.hadoop.configurations
真的就是这样:--> *=/opt/modules/cdh/hadoop-2.5.0-cdh5.3.6/etc/hadoop
6.9、在Mysql中创建Oozie的数据库
6.9.1、进入数据库
$ mysql -uroot -p123456
6.9.2、创建oozie数据库
mysql> create database oozie;
6.10、初始化Oozie的配置
6.10.1、上传Oozie目录下的yarn.tar.gz文件到HDFS(尖叫提示:yarn.tar.gz文件会自行解压)
$ bin/oozie-setup.sh sharelib create -fs hdfs://hadoop-senior01.itguigu.com:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
执行成功之后,去50070检查对应目录有没有文件生成。
6.10.2、创建oozie.sql文件
$ bin/oozie-setup.sh db create -run -sqlfile oozie.sql
6.10.3、打包项目,生成war包
$ bin/oozie-setup.sh prepare-war
6.11、启动Oozie服务
$ bin/oozied.sh start
(关闭Oozie服务:$ bin/oozied.sh stop)
6.12、访问Oozie的Web页面
http://hadoop-senior01.itguigu.com:11000/oozie
7、案例
7.1、案例一:使用Oozie调度Shell脚本
7.1.1、解压官方案例模板
$ tar -zxf oozie-examples.tar.gz
7.1.2、创建工作目录
$ mkdir oozie-apps/
7.1.3、拷贝任务模板到oozie-apps/目录
$ cp -r examples/apps/shell/ oozie-apps/
7.1.4、随意编写一个脚本p1.sh
$ vi /opt/modules/cdh/oozie-4.0.0-cdh5.3.6/oozie-apps/shell/p1.log
内容如下:
#!/bin/bash
/usr