1、编译oozie 环境条件: Unix box (tested on Mac OS X and Linux) Java JDK 1.6 Maven 3.0.1 Hadoop 0.20.2 Pig 0.7
注意 JDK commands (java, javac) must be in the command path. The Maven command (mvn) must be in the command path.
1.1、安装maven:将maven的源码包解压缩,将解压后的文件夹放置/opt/目录下,并将/opt/apache-maven-3.2.3/bin目录添加至用户的环境变量中
1.2、安装pig:将pigxx.tar.gz解压,将解压后的文件夹放在/opt/目录下,并将${PIG_HOME}/bin路径加入到用户的环境变量中 修改ooize根目录下的pom.xml文件: //更改jdk为系统所用的版本,1.8版本的jdk编译会出错 <javaVersion>1.7</javaVersion> <targetJavaVersion>1.7</targetJavaVersion>
//默认为2.3.0,改为2.5.0后,编译出错 <hadoop.version>2.3.0</hadoop.version>
1.3、执行oozie-4.0.1.tar.gz解压后bin目录下的mkdistro脚本 ./mkdistro.sh -DskipTests
编译成功后,执行第二步
2、安装Oozie 2.1 将oozie-4.0.1目录下的distro/target目录下的oozie-4.0.1-distro.tar.gz解压至/usr/local/目录下,并将其重命名为oozie(个人喜好,也可不用重命名)
2.2、/usr/local/oozie/目录下,解压share,example,client三个tar包,如下:
oozie-client-4.0.1.tar.gz(oozie的客户端,可通过它提交工作流任务)、oozie-examples.tar.gz(oozie的工作流事例程序)、oozie-sharelib-4.0.1.tar.gz
2.3、在HDFS文件系统中创建一个/user/hu的目录('hu'应改为oozie的使用者名称),并将oozie-sharelib-4.0.1.tar.gz解压后的share目录上传至HDFS中的/user/hu目录下; hu@master:/usr/local/hadoop/bin$ hadoop fs -mkdir /user/hu (创建/user/hu目录) hu@master:/usr/local/hadoop$ bin/hadoop dfs -copyFromLocal /usr/local/oozie/share /user/hu (将share目录上传至/user/hu目录) hu@master:/usr/local/hadoop$ bin/hadoop dfs -ls /user/hu (列出HDFS中/user/hu目录下的文件,看是否上传成功)
2.4、在/usr/local/oozie目录下创建libext目录,将oozie-4.0.1/hadooplibs/target/oozie-4.0.1-hadooplibs/oozie-4.0.1/hadooplibs/hadooplib-2.3.0.oozie-4.0.1目录下的所有tar包copy至新建的libext目录 cp hadooplib-2.3.0.oozie-4.0.1/* /usr/local/oozie/libext/
2.5、将mysql-connector-java-5.1.27.jar(应对应自己的mysql版本)和ext2.2.zip拷贝至/usr/local/oozie/lib和/usr/local/oozie/libext目录下 2.6、 将ext2.2.0和hadoop的jar包打进新war包里,否则会启动会失败。可以检查下/usr/local/oozie/oozie-server/webapps/有没有 oozie.war,来验证是否成功 在/usr/local/oozie/bin下执行命令(这将会把/usr/locao/oozie/libext目录下的jar包打包为一个war文件,该war文件存放在/usr/local/oozie/oozie-server/webapps目录下): ./oozie-setup.sh prepare-war
2.7、设置环境变量 编辑/etc/profile文件,添加如下: export OOZIE_HOME=/usr/local/oozie export CATALINA_HOME=/usr/local/oozie/oozie-server export PATH=${CATALINA_HOME}/bin:${OOZIE_HOME}/bin:$PATH export OOZIE_URL=http://localhost:11000 export OOZIE_CONFIG=/usr/local/oozie/conf
2.8、修改/usr/local/oozie/conf/oozie-site.xml文件:修改如下
<property> <name>oozie.db.schema.name</name> <value>oozie</value> <description> Oozie DataBase Name </description> </property> <property> <name>oozie.service.JPAService.create.db.schema</name> <value>false</value> <description> </description> </property> <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://localhost:3306/${oozie.db.schema.name}</value> <description> JDBC URL. </description> </property> <property> <name>oozie.service.JPAService.jdbc.username</name> <value>oozie</value> <description> DB user name. </description> </property> <property> <name>oozie.service.JPAService.jdbc.password</name> <value>oozie</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>
2.9、配置mysql数据库,并生成oozie数据库脚本文件(将会在/usr/local/oozie/bin目录下生成oozie.sql文件) mysql -u root -p (进入mysql命令行) create database oozie; (创建名称为oozie的数据库) grant all privileges on oozie.* to 'oozie'@'localhost' identified by 'oozie'; (设置oozie数据库的访问全选,创建用户名为oozie,密码为oozie的用户) grant all privileges on oozie.* to 'oozie'@'%' identified by 'oozie'; (设置oozie数据库的访问权限) FLUSH PRIVILEGES; 在/usr/local/oozie/bin目录下执行以下命令: ./ooziedb.sh create -sqlfile oozie.sql 接着执行如下命令,执行oozie数据库脚本文件,这将在oozie数据库中生成与oozie相关的数据表 ./oozie-setup.sh db create -run -sqlfile /usr/local/oozie/bin/oozie.sql
2.10、修改hadoop安装目录下的core-site.xml文件,hu为用户名,hu为hu用户所在的组(修改完之后,需要重启hadoop)
<property> <name>hadoop.proxyuser.hu.hosts</name> <value>192.168.168.101</value>(192.168.168.101应改为hadoop的主节点ip) </property> <property> <name>hadoop.proxyuser.hu.groups</name> <value>hu</value> </property>
2.11、修改/usr/local/oozie/conf/hadoop-conf/core-site.xml文件,添加如下:
<property> <name>yarn.resourcemanager.address</name> <value>192.168.168.101:8032</value>(应与hadoop的配置相同,同下) </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>192.168.168.101:8030</value> </property>
2.12、执行binoozie-start.sh,启动oozie
可以用如下命令,查看oozie的运行状态。正常的话,应该显示NORMAL ./oozie admin -oozie http://localhost:11000/oozie -status
如果启动还有错误可以查看/usr/local/oozie/logs/catalina.out 里面的错误日志
2.13、运行oozie的mapreduce示例程序 将实例程序上传至HDFS的/user/hu文件夹 bin/hadoop fs -copyFromLocal /usr/local/oozie/examples /user/hu
修改/usr/local/oozie/examples/apps/map-reduce/job.properties文件(yarn中已经没有jobTracker,以下jobTracker填入yarn.resourcemanager.address的值,oozie.wf.application.path即HDFS中oozie示例程序的路径) nameNode=hdfs://master:9000 jobTracker=master:8032 queueName=default examplesRoot=examples
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/map-reduce outputDir=map-reduce
在/usr/local/oozie/oozie-client-4.0.1/bin中调用oozie脚本,执行工作流 ./oozie job -oozie http://localhost:11000/oozie -config /usr/local/oozie/examples/apps/map-reduce/job.properties -run
注意:若此时报错:java.net.ConnectException: Connection refused,则表明oozie没有启动