oozie 的使用 最好使用cdh,各框架兼容性好的, 如果使用apache 版本, 需要逛逛apache社区,看看个框架的版本依赖,最好不要跨版本号依赖,解决兼容性问题是很头疼的问题
大数据框架中,oozie 是比较复杂的, 尤其是部署的时候
定时调度任务框架有
Azkaban Azkaban部署起来 非常简单, 是最简单的
crontab 滴滴公司就是用的crontab 轻量级
oozie 是最强大的 ,部署的时候, 细节很重要
1、解压Oozie
[victor@node1 software]$ tar -xzvf oozie-4.0.0-cdh5.3.6.tar.gz -C /opt/module
2、修改Hadoop配置文件,添加Oozie相关配置
oozie是有用户的,默认用户就是oozie
core-site.xml
<!-- Oozie Server的Hostname -->
## 允许哪些框架被oozie 代理victor用户去操作hadoop,victor修改成自己的用户名
<property>
<name>hadoop.proxyuser.victor.hosts</name>
<value>*</value>
</property>
<!-- 允许被Oozie代理的用户组 -->
## 允许oozie 代理victor用户去操作hadoop,victor修改成自己的用户名
<property>
<name>hadoop.proxyuser.victor.groups</name>
<value>*</value>
</property>
mapred-site.xml
使用oozie框架,一定要配置jobhistory server
<!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>
yarn-site.xml
<!-- 任务历史服务 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop102:19888/jobhistory/logs/</value>
</property>
完成后:记得scp同步到其他机器节点
3、启动Hadoop集群
[victor@node1 hadoop]$ sbin/start-dfs.sh
[victor@node1 hadoop]$ sbin/start-yarn.sh
[victor@node1 hadoop]$ sbin/mr-jobhistory-daemon.sh start historyserver
尖叫提示:需要开启JobHistoryServer, 最好执行一个MR任务进行测试。
4、在oozie根目录下,解压hadooplibs
[victor@node1 oozie]$ tar -xzvf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C ../
完成后Oozie目录下会出现hadooplibs目录。目的是把解压后的hadooplibs文件夹,放到oozie目录下
5、在Oozie目录下创建libext目录
[victor@node1 oozie]$ mkdir libext/
6、拷贝一些依赖的Jar包
1) 将hadooplibs里面的jar包,拷贝到libext目录下
[victor@node1 oozie]$ cp -ra hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/* libext/
2) 拷贝Mysql驱动包到libext目录下
oozie 的 元数据保存在mysql 中 ,默认derby
[victor@node1 oozie]$ cp -a mysql-connector-java-5.1.27-bin.jar libext/
7、将ext-2.2.zip拷贝到自己创建的libext/目录下
ext是一个js框架,用于展示oozie前端页面
[victor@node1 oozie]$ cp -a ext-2.2.zip libext/
8、修改Oozie配置文件
oozie-site.xml
[victor@node1 oozie]$ vim conf/oozie-site.xml
<property>
<name>oozie.service.JPAService.jdbc.driver</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>oozie.service.JPAService.jdbc.url</name>
<value>jdbc:mysql://hadoop102:3306/oozie</value>
</property>
<property>
<name>oozie.service.JPAService.jdbc.username</name>
<value>root</value>
</property>
<property>
<name>oozie.service.JPAService.jdbc.password</name>
<value>000000</value>
</property>
<property>
<name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
<value>*=/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/etc/hadoop</value>
<description>让Oozie引用Hadoop的配置文件“*=”不能删</description>
</property>
9、在Mysql中创建Oozie的数据库
[victor@node1 oozie]$ mysql -uroot -p000000
mysql> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
10、初始化Oozie
1)上传Oozie目录下的yarn.tar.gz文件到HDFS
[victor@node1 oozie]$ bin/oozie-setup.sh sharelib create -fs \
hdfs://hadoop102:9000 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
尖叫提示:yarn.tar.gz文件会自行解压
命令的意思是把这个oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz 包 解压出来,放到hdfs上面
以wordcount案例,oozie作为定时调度框架,必须先把w..t.jar上传到hdfs,oozie才有能力去 调度它,放到本地是不行的
执行成功之后,去50070检查对应目录有没有文件生成。
/user/victor/share/lib/lib_20180208085236
2) 创建oozie.sql文件
[victor@node1 oozie]$ bin/oozie-setup.sh db create -run -sqlfile oozie.sql
操作的时候, mysql一定要有oozie这个数据库
在oozie这个库里面,创建了一系列的表
3) 打包项目,生成war包
[victor@node1 oozie]$ bin/oozie-setup.sh prepare-war
11、启动Oozie服务
[victor@node1 oozie]$ bin/oozied.sh start
如需正常关闭Oozie服务,请使用
[victor@node1 oozie]$ bin/oozied.sh stop
12、访问Oozie的Web页面
看到的web页面, 依赖ext-2.2.zip这个js框架
http://linux01:11000/oozie