1. 解压 tar -zxvf oozie-4.0.0-cdh5.3.6.tar.gz
2.配置hadoop的集群,添加一个代理用户(给oozie运行mapreduce的权限)
在hadoop的core-site.xml配置文件中添加 (要在hadoop启动之前添加) root 可以改成 当前操作系统的用户 eg:beifeng
1 <!-- OOZIE 添加代理--> 2 <property> 3 <!-- OOZIE 的启动用户--> 4 <name>hadoop.proxyuser.root.hosts</name> 5 <!-- OOZIE 所在的主机--> 6 <value>hadoop</value> 7 </property> 8 <property> 9 <!-- OOZIE 用户的组--> 10 <name>hadoop.proxyuser.root.groups</name> 11 <value>*</value> 12 </property>
配置 oozie 的配置文件 oozie-site.xml
3.解压 oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz
多了一个文件
jar包存放位置 /opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/oozie-4.0.0-cdh5.3.6/hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6
4:拷贝jar至 libxt目录下
5:把ext.zip拷贝到刚创建的libxt目录下
6:运行oozie-setup.sh脚本的所有组件配置Oozie添加到libext /目录。
语法:
1 $ bin/oozie-setup.sh prepare-war [-d directory] [-secure] 2 sharelib create -fs <FS_URI> [-locallib <PATH>] 3 sharelib upgrade -fs <FS_URI> [-locallib <PATH>] 4 db create|upgrade|postupgrad -run [-sqlfile <FILE>]
将jar包导成war包
1 bin/oozie-setup.sh prepare-war -d /opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/libxt
7:启动hadoop 创建一个hdfs目录oozie共享包 /user/root/share/lib/lib_20171214123146
1 bin/oozie-setup.sh sharelib create -fs hdfs://hadoop -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
(ps:如果已经存在直接使用upgrade更新最新的lib bin/oozie-setup.sh sharelib upgrade -fs hdfs://hadoop -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz)
8:创建数据库
1 bin/ooziedb.sh create -sqlfile oozie.sql -run DB Connection
9:启动oozie
1 *在控制台启动 2 bin/oozied.sh run 3 *在后台启动 4 bin/oozied.sh start | stop
多了一个
10:oozie的日志目录
1 more /opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/logs/oozie.log
补充一下 more的用法
11:访问 web端 http://hadoop:11000/oozie/
12:运行 example application
1) 解压
oozie-examples.tar.gz
1 tar -zxf oozie-examples.tar.gz
2) 上传examples至hdfs用户主目录下
1 /opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6/bin/hadoop dfs -put examples examples
注意:这里本地的/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/examples/apps/*里面的文件发生变化不用同步到hdfs的文件中
3) 修改job.properties
oozie-4.0.0-cdh5.3.6/examples/apps/map-reduce/job.properties
1 #jobTracker=hadoop:8032 yrc是resourcemanager的ha cluster-id 2 jobTracker=yrc 3 # 队列 yarn的资源是按队列分配的 4 queueName=default 5 examplesRoot=examples 6 7 #定义一个workflow工作流的路径,一个路径下只能有一个workflow.xml 8 oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce/workflow.xml 9 outputDir=map-reduce
4)运行job
###方法一 直接使用-oozie http://localhost:11000/oozie
1 bin/oozie job -oozie http://localhost:11000/oozie -config examples/apps/map-reduce/job.properties -run
###方法二 配置环境变量
1 export OOZIE_URL=http://localhost:11000/oozie 2 bin/oozie job -config examples/apps/map-reduce/job.properties -run
出现两个任务的原因是 oozie本身就是一个MapReduce 它又运行了一个MapReduce程序所以会有两个任务
也可以在命令行查看结果
1 bin/oozie job --oozie http://localhost:11000/oozie -config examples/apps/map-reduce/job.properties -info 0000000-170205191208965-oozie-chk-W
这个博客里面详细的介绍了 oozie运行时的一些错误场景以及解决方案
1 http://blog.csdn.net/wiborgite/article/details/78585689
(4)oozie本身是一个MapReduce程序,仅仅只有Map Task。
针对不同类型的任务,workflow,模板
(5)workflow action nodes
*actions可以计算处理,运行在框架(远程)
*actions是异步的
*actions有两个状态:要么成功(ok)要么失败(error)
*actions可以自动恢复
(6)如何定义一个WorkFlow
* job.properties
关键点:指向workflow.xml文件所在的HDFS位置
* workflow.xml
定义文件
XML文件
包含几点
* start
* action
MapReduce、Hive、Sqoop、Shell
* ok
* error
* kill
* end
* lib 目录
依赖的jar包
workflow.xml编写:
* 流程控制节点
* Action节点
注意:节点名称必需复合 [a-zA-Z][-_a-zA-Z0-0]* ,最大20个字符