一、 任务描述
本实验练习Oozie的安装和配置,然后运行例子进行oozie的功能测试。
二、 任务目标
学会Oozie的安装和使用
三、 任务环境
Ubuntu16.04、mysql-5.7.22、oozie-4.3.0、hadoop-2.7.3、jdk1.8.0_73
四、 任务分析
解压编译好的oozie安装包,然后进行配置,配置主要有hadoop文件的配置和oozie文件的配置。
♥ 知识链接
oozie简介
Oozie是一种Java Web应用程序,它运行在Java servlet容器——即Tomcat——中,并使用数据库来存储以下内容:1.工作流定义,2.当前运行的工作流实例,包括实例的状态和变量
五、 任务实施
步骤1、maven安装
说明:由于编译ooize需要耗费大量的网络资源和时间,因此在实际操作时,图一到图八的操作只做参考,直接从图九开始实验。
进入cd /simple/soft
目录下,解压maven的tar包到simple目录下,如图1所示
图1 maven安装
然后在当前目录下执行命令【vim ~/.bashrc
】,进入文件,配置maven的环境变量。如图2所示
图2 配置环境变量
在soft目录下解压oozie的压缩包到simple目录下,如图3所示
图3 解压oozie安装包
编辑pom.xml文件,如图4所示
图4 进入pom.xml文件
修改配置如图5和6
图5 配置pom.xml
图6 配置pom.xml
修改完后开始编译,如图7
图7 编译oozie
编译成功后的界面如8所示
图8 编译成功界面
在simple目录下创建data目录,用于存放解压好的oozie,如图9所示
图9 创建data目录
本实验环境将编译好的压缩包放在了/simple/soft/oozie-complie目录下。在该目录下将编译好的压缩包解压到simple/data目录下。如图10
图10 解压编译好的tar包
进入/simple/data目录下查看解压好的文件并将文件名修改。如图11
图11 查看已解压的文件并修改命名
配置oozie的环境变量,如图12所示
图12 配置oozie的环境变量
使环境变量生效,如图13
图13 使环境变量生效
oozie server需要用到一个js库,需要下载ext-2.2.zip这个文件放的libext文件夹里。否则就看不了oozie的web控制台。(打war包的时候会报:INFO: Oozie webconsole disabled, ExtJS library not specified)
执行如下命令【cd oozie】进入oozie目录,然后执行命令【mkdir libext】创建libext目录,然后将下载好的ext-2.2.zip放到libext目录下面:【cp /simple/soft/ext-2.2.zip ./libext】。如图14所示
图14 将ext-2.2.zip放到指定目录
然后,执行命令:
【cp /simple/hadoop/share/hadoop/*/*.jar libext/】,
【cp /simple/hadoop/share/hadoop/*/lib/*.jar libext/】
将hadoop的相关jar包拷贝到libext目录下,第二条命令复制时会提示一些信息属于正常现象。如图15所示
图15 拷贝hadoop相关jar包到libext
注意:这里有个大坑,oozie server默认使用tomcat 6.0.41,而hadoop也有内置的server,如果按照上面两个命令把hadoop依赖的jar包都拷贝过去,有可能出现冲突,这两个server使用的servlet、jsp版本很可能不一样。所以需要删除两个jar包。
oozie server还需要依赖个数据库,常用的是mysql,所以需要把mysql的驱动jar包“mysql-connector-java-5.1.45.jar“也放在libext中。如图16
图16 删除冲突jar包
配置数据库连接,文件是conf/oozie-site.xml。如图17所示,代码如下
图17 配置数据库连接
1. <property> 2. <name>oozie.service.JPAService.create.db.schema</name> 3. <value>false</value> 4. </property> 5. <property> 6. <name>oozie.service.JPAService.jdbc.driver</name> 7. <value>com.mysql.jdbc.Driver</value> 8. </property> 9. <property> 10. <name>oozie.service.JPAService.jdbc.url</name> 11. <value>jdbc:mysql://localhost:3306/oozie?createDatabaseIfNotExist=true</value> 12. </property> 13. <property> 14. <name>oozie.service.JPAService.jdbc.username</name> 15. <value>root</value> 16. </property> 17. <property> 18. <name>oozie.service.JPAService.jdbc.password</name> 19. <value>root</value> 20. </property> 21. <property> 22. <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> 23. <value>*=/simple/hadoop/etc/hadoop</value> 24. </property>
进入/simple/hadoop/etc/hadoop目录下,修改“core-site.xml“,配置代理。
注意:因为要访问8020端口,所以修改配置“fs.default.name“如图18
图18 进入core-site.xml文件
配置过程如图19,修改该配置是为oozie添加伪装功能(impersonation),关于伪装功能,这里不在细说。
图19 配置core-site.xml
上面的步骤完成后,就可以生产server的war包了,供tomcat访问。执行命令【cd /simple/data/oozie】进入该目录下, 执行命令【bin/oozie-setup.sh prepare-war】。如图20所示,最终结果为图21
图20 生成oozie的war包
图21 结果图
输入命令【service mysql start】启动mysql,然后执行以下命令来初始化数据库【bin/ooziedb.sh create -sqlfile oozie.sql】,如图22
图22 初始化数据库
接着执行如下命令,执行oozie数据库脚本文件,这将在oozie数据库中生成与oozie相关的数据表,如图23
图23 生成数据表
成功后界面如下图24
图24 成功界面
在当前目录虾执行命令【mysql -uroot -proot】登陆mysql,选择oozie数据库,然后查看生成的数据表。如图25
图25 查看生成的数据表
输入命令【start-all.sh】启动hadoop服务,在启动oozie之前,还需要执行下面的命令,为下面的测试准备,这个过程需要几分钟的时间,请耐心等待。如图26
图26 为测试准备
在oozie-4.3.0下有一个oozie-examples.tar.gz包 。将它进行解压,解压之后生成一个examples目录。在该目录的apps中有一些简单的例子。如图27
图27 解压oozie-examples.tar.gz
解压完后,将解压好的examples目录上传。如图28
图28 上传examples目录
输入命令【bin/oozied.sh start】启动oozie。如图29
图29 启动oozie
在浏览器地址栏输入【http://localhost:11000】,在网页端查看 。如图30
图30 webui查看ooize状态
六、 任务测试
-oozie 后面跟的是oozie server的地址,-config后面跟的是执行的脚本,除了在hdfs上要有一份examples,在本地也需要一份。这个命令中的”examples/apps/map-reduce/job.properties” 是本地路径的job.properties,不是hdfs上的。如图31
图31 运行job
在浏览器地址栏输入【http://localhost:11000】,在网页端查看查看,会发现有一行字,这是运行的job。 如图32
图32 webui查看ooize
点击该job,弹出如下,页面中的Status显示为RUNNING表示job正在运行。如图33
图33 查看job运行状态