oozie:工作流调度工具
Oozie是一个基于工作流引擎的服务器,可以在上面运行Hadoop的Map Reduce和Pig任务。它其实就是一个运行在Java Servlet容器(比如Tomcat)中的Javas Web应用。
对于Oozie来说,工作流就是一系列的操作(比如Hadoop的MR,以及Pig的任务),这些操作通过有向无环图的机制控制。这种控制依赖是说,一个操作的输入依赖于前一个任务的输出,只有前一个操作完全完成后,才能开始第二个。
Oozie工作流通过hPDL定义(hPDL是一种XML的流程定义语言)。工作流操作通过远程系统启动任务。当任务完成后,远程系统会进行回调来通知任务已经结束,然后再开始下一个操作。
简单来说,oozie的功能就是按照某一顺序执行一些列操作如:先执行hive进行数据分析,然后将结果通过sqoop传到mysql。这两部可以通过一个workflow实现,即工作流。
oozie的功能
- Workflow:顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个)
- Coordinator:定时触发workflow;
- Bundle Job:绑定多个Coordinator。
Workflow示例图:
Coordinator示例图:
Bundle示例图:
oozie的配置(这里我使用的是oozie-4.1.0-cdh5.5.0版本)
需要准备的环境:
linux
java1.6+
hadoop2
extjs2.2(这个是oozie在浏览器显示所需要的)
1、修改hadoop配置文件中的core-site.xml(修改后hadoop需要重启)
<!-- OOZIE -->
<property>
<name>hadoop.proxyuser.用户名.hosts</name>
<value>主机名</value>
</property>
<property>
<name>hadoop.proxyuser.用户名.groups</name>
<value>*</value>
</property>
2、在oozie的配置文件oozie-site.xml中配置hadoop的配置文件路径
<property>
<name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
<value>*=$HADOOP_HOME/etc/hadoop</value>
</property>
4、创建一个 libext目录,将上一步yarn的包下的所有jar包复制到该目录下,extjs2.2的zip压缩包也放到该目录下
5、打包(在oozie-server/webapps下生成一个oozie.war包)
bin/oozie-setup.sh prepare-war
6、上传一个共享的包到HDFS中(会在hdfs的对应用户目录下生成一个share文件夹,里面存放很多jar包,供后续一些程序使用)
bin/oozie-setup.sh sharelib create -fs hdfs://你的主机名(IP):端口号 -locallib sharelib的yarn的tar包
7、创建数据库
bin/ooziedb.sh create -sqlfile oozie.sql -run DB Connection
8、现在就可以启动了
bin/oozie-start.sh