Oozie安装、配置 让Hadoop流动起来
Oozie安装、配置 让Hadoop流动起来
写在前面一:
本文总结 基于Hadoop的工作流调度系统——Oozie
写在前面二:
使用软件说明:
约定所有软件的存放目录:/home/yujianxin
一、什么是Oozie
1、Oozie是一个开源的基于Hadoop的工作流调度系统,用于运行Hadoop Map/Reduce和Pig 任务工作流,同时Oozie还是一个Java Web程序,运行在Java Servlet容器中,如Tomcat。 2、 Oozie工作流中拥有多个Action,如Hadoop Map/Reuce job,Hadoop Pig job等,所有的Action以有向无环图(DAG Direct Acyclic Graph)的模式部署运行.所以在Action的运行步骤上是有方向的,只能上一个Action运行完成后才能运行下一个Action。 3、Oozie工作流通过HPDL(一种通过XML自定义处理的语言,类似JBOSS JBPM的JPDL)来构造。 4、 Oozie工作流中的Action在远程系统运行如(Hadoop,Pig服务器上)。一旦Action完成,远程服务器将回调Oozie的接口并通知Action已经完成,这时Oozie又会以同样的方式执行工作流中的下一个Action,直到工作流中所有Action都完成(完成包括失败)。
Oozie工作流中包含可控制的工作流节点(control flow node)和Action节点(action node). Control flow node其实可以理解为Oozie的语法,比如可以定义开始(start),结束(end),失败(fail)节点.开始节点就表示从该节点开始运行.同时也提供一种机制去控制工作流的执行过程,如选择(decision),并行(fork),join节点. Oozie工作流提供各种类型的Action用于支持不同的需要,如Hadoop Map/Reduce,Hadoop File System,Pig,Hive,Streaming,SSH,HTTP,Email,Java,以及Oozie子流程.Oozie也支持自定义扩展以上各种类型的Action . Oozie工作流允许自定义参数,如${inputDir}. Oozie使用自定义的xml语言hPDL来定义工作流。 Oozie使用MySQL存储元数据。 二、Oozie安装配置
安装Oozie Server
Oozie Server可以为我们提供很多管理Job的便捷功能,比如,通过可视化界面去管理Job的运行状态,同时也支持我构建含有多个复杂Hadoop Job流程,各个Job之间的依赖关系完全可以通过一个工作流配置文件组装起来,然后由Oozie Server其管理执行。
2.1、安装Maven,参考http://blog.csdn.net/aaronhadoop/article/details/27834181
2.2、安装MySQL,参考http://blog.csdn.net/aaronhadoop/article/details/24748411
2.3、安装Tomcat,参考http://blog.csdn.net/aaronhadoop/article/details/24748057
2.3、安装Oozie
2.3.1、使用Maven构建oozie
<span style="font-family:SimSun;">cd /home/yujianxin/oozie tar -zxvf oozie-3.3.2.tar.gz cd /home/yujianxin/oozie/oozie-3.3.2 bin/mkdistro.sh -DskipTests</span>
构建后可在oozie-3.3.2/distro/target目录下看到构建后的文件,我的路径是:/home/yujianxin/Ooize/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2。
约定此目录为Oozie的安装目录。
2.3.3、在$OOZIE_HOME下创建目录libext,并将ext的包、MySQL的驱动包和hadoop相关的jar库文件拷贝到libext下面
<span style="font-family:SimSun;">cp /home/yujianxin/Oozie/ext-2.2.zip $OOZIE_HOME/libext/ cp /home/yujianxin/hive/hive-0.9.0/lib/mysql-connector-java-5.1.10.jar ./libext/ cp /home/yujianxin/hadoop/hadoop-1.1.2/hadoop-*.jar ./libext/ cp /home/yujianxin/hadoop/hadoop-1.1.2/lib/*.jar ./libext/ </span>2.3.4、执行以下命令开始安装
<span style="font-family:SimSun;">cd $OOZIE_HOME bin/oozie-setup.sh prepare-war</span>生成$OOZie/oozie-server/webapps/oozie.war文件
2.3.5、配置Oozie
<span style="font-family:SimSun;">cd /home/yujianxin/Oozie/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/conf vi oozie-site.xml <property> <name>oozie.service.JPAService.jdbc.driver</name> <value>com.mysql.jdbc.Driver</value> <description> JDBC driver class. </description> </property> <property> <name>oozie.service.JPAService.jdbc.url</name> <value>jdbc:mysql://222.22.91.68:3306/oozie</value> <description> JDBC URL. </description> </property> <property> <name>oozie.service.JPAService.jdbc.username</name> <value>root</value> <description> DB user name. </description> </property> <property> <name>oozie.service.JPAService.jdbc.password</name> <value>zutcs_root_68</value> <description> DB user password. IMPORTANT: if password is emtpy leave a 1 space string, the service trims the value, if empty Configuration assumes it is NULL. </description> </property></span>默认情况下,Oozie的配置中有个配置项oozie.service.JPAService.create.db.schema,值为false,设置非自动创建数据库,我们保持默认设置,这样可以通过手动创建Oozie数据库,并对其进行权限控制。然后,我们在MySQL数据库中创建数据库,名称为oozie,并进行访问授权:
CREATE DATABASE oozie;
GRANT ALL ON oozie.* TO 'shirdrn'@'oozie-server' IDENTIFIED BY '0o21e';
FLUSH PRIVILEGES;
然后可以执行如下命令,生成Oozie所需要的数据表:
bin/ooziedb.sh create -sqlfile oozie.sql -run
启动Oozie
cd $OOZIE_HOME
bin/oozied.sh start
查看图形化界面
http://slave3:11000/oozie
2.3.6、整合Oozie和Hadoop
<span style="font-family:SimSun;"><!-- OOZIE --> <property> <name>hadoop.proxyuser.root(用户名).hosts</name> <value>192.168.131.133</value> </property> <property> <name>hadoop.proxyuser.root(用户名).groups</name> <value>root</value> </property></span>重启Hadoop集群。
安装Oozie Client
我们可以通过在外部的一个Oozie客户端去提交工作流任务,实际上就是一个客户端程序,通过与Oozie Server进行交互,提交任务,并由Oozie Server去调用执行。回到oozie-3.3.2.tar.gz解压缩的目录下,通过前面的构建,现在已经可以看到有一个client目录,该目录下就是Oozie的客户端相关文件。
含有Oozie客户端脚本的路径,我这里为/home/yujianxin/Oozie/oozie-3.3.2/client/target/oozie-client-3.3.2-client/oozie-client-3.3.2。
查看Oozie客户端运行job命令的帮助信息
<span style="font-family:SimSun;">cd /home/yujianxin/Oozie/oozie-3.3.2/client/target/oozie-client-3.3.2-client/oozie-client-3.3.2 bin/oozie help bin/oozie help job</span>我们可以找到,Oozie发行包中自带的examples,我这里对应的目录是/home/yujianxin/Oozie/oozie-3.3.2/examples/target/oozie-examples-3.3.2-examples/examples/apps,我们可以通过运行这些例子来验证安装是否成功。执行以下命令
<span style="font-family:SimSun;">hadoop fs -put /home/yujianxin/Oozie/oozie-3.3.2/examples/target/oozie-examples-3.3.2-examples/ /Oozie/child1/examples</span>我们拿examples中的map-reduce来进行验证,修改job.properties文件,配置内容如下所示:
<span style="font-family:SimSun;">cd /home/yujianxin/Oozie/oozie-3.3.2/examples/target/oozie-examples-3.3.2-examples/examples/apps/map-reduce 修改job.properties nameNode=hdfs://slave3:9000 jobTracker=slave3:9001 queueName=default examplesRoot=examples oozie.wf.application.path=${nameNode}/Oozie/child1/examples/oozie-examples-3.3.2-examples/examples/apps/map-reduce outputDir=map-reduce_yjx</span>运行任务
<span style="font-family:SimSun;">cd /home/yujianxin/Oozie/oozie-3.3.2/client/target/oozie-client-3.3.2-client/oozie-client-3.3.2 </span>
通过OozieWeb管理控制台查看提交运行的任务
点击具体某个job
查看作业运行的拓扑图
此处只是实现了Oozie的安装、配置及测试了官方自带的程序。在项目中的实际应用欢迎qq(1152596901)交流
评论暂时关闭