问题导读:
1. 如何在hadoop环境下,安装部署oozie ?
2. oozie 运行时的一些常见问题,及如何解决?
oozie的安装部署及配置感觉不是一般的繁琐,而且层出不穷的bug也弄的我焦头烂额,下面主要讲下我的安装过程及遇到的问题 。
一.必要准备:
1. Apache的tomcat
2. mysql-connector-java-5.1.6.jar 或其他版本的mysql-connectorjar包
3. ext-2.2.zip
二.安装部署
0. 下载oozie-3.3.2的tar包,并解压:tar -xvf oozie-3.3.2.tar。oozie4.0.0安装失败了,原因是oozie-setup.sh一直执行不通过,希望那位大牛的赐教一下。
1. 在解压出来的目录下,修改pom.xml中的hadoop版本为您所需要的版本,我的是hadoop-2.2.0,这一步是因为oozie需要根据hadoop版本进行编译
2. 修改hadooplib下相应的版本目录下的pom.xml文件中的hadoop版本,这个目录下生成的lib待会会用到
3.执行bin/mkdistro.sh –DskipTests,进行编译
4.编译之后可以在OOZIE_HOME/distro/target/下找到oozie-3.3.2-distro,这个就是编译好的版本,我们之后的部署就是部署这个目录下的oozie,若无特别说明,安装目录也是指这个目录
5.oozie安装目录下,解压share,example(可选),clint三个tar包,如下:
oozie-client-3.3.2.tar.gz
oozie-examples.tar.gz
oozie-sharelib-3.3.2.tar.gz
6.把share tar包解压出来的文件夹,share,上传到hdfs的oozie用户下:
hadoop fs –put share
7.oozie安装目录下新建文件夹libext,在第二步hadooplib目录下找到相应版本,在里边的target目录下可以找到对应的lib目录,把里边的所有jar包copy到新建的libext下
8.添加mysql相关包:
bin/oozie-setup.sh -jars mysql-connector-java-5.1.6.jar -extjs /ext-2.2.zip
注意mysql-connector和ext的jar包路径不要写错
9.添加hadoop相关包
$OOZIE_HOME/bin/oozie-setup.sh -hadoop 2.2.0 ${HADOOP_PREFIX} -extjs /ext-2.2.zip
10.把mysql-connector jar包copy到lib,libext下
11. 环境变量
etc/profile:主要是设置oozie,apache,如下
- export OOZIE_HOME=/usr/lib/cloud/oozie/oozie
- export CATALINA_HOME=/usr/lib/cloud/oozie/apache-tomcat-7.0.42
-
- export PATH="${CATALINA_HOME}"/bin:$PATH
- export OOZIE_URL=http://localhost:11000/oozie
- export PATH="${OOZIE_HOME}"/bin:${PATH}
复制代码
12.修改oozie-site.Xml文件:添加如下,感觉直接用默认的就好,不需要修改oozie-site.xml
- <property>
-
- <name>oozie.service.JPAService.create.db.schema</name>
-
- <value>true</value>
-
- <description>
-
- </description>
-
- </property>
复制代码
13. 在hadoop的core-site.xml中添加如下,oozie为用户名,hadoop为oozie所在的组
- <property>
-
- <name>hadoop.proxyuser.oozie.hosts</name>
-
- <value>192.168.237.128</value>
-
- </property>
-
- <property>
-
- <name>hadoop.proxyuser.oozie.groups</name>
-
- <value>hadoop</value>
-
- </property>
复制代码
14.在oozie目录下conf/hadoop-conf下,修改core-site.xml文件,添加:
- <property>
-
- <name>yarn.resourcemanager.address</name>
-
- <value>baby6:8032</value>
-
- </property>
-
- <property>
-
- <name>yarn.resourcemanager.scheduler.address</name>
-
- <value>master:8030</value>
-
- </property>
复制代码
15.现在可以启动了,bin下执行oozie-start.sh
启动之后正常的话,可以在网页上看到如下界面,这就表示看上去成功了:
三. 常见的问题:
1.运行的时候报下面的错误:
JA017: Unknown hadoop job [job_1384170946375_0004] associated with action [0000000-131111204232566-oozie-oozi-W@mr-node]. Failing this action!
变种很多,原因就是oozie找不到hadoop job,之前在MR1上运行的好好的,升级成hadoop 2.x.x上就容易出现这个问题。我的解决方法是,把jobhistory的配置相关信息放在oozie的conf/hadoop-conf/core-site.xml中,当然首先你要开启jobhistory。
开启hadoop jobhistory的方式为$HADOOP_PREFIX/sbin/mr-jobhistory-daemon.sh start historyserver,估计很多像我一样从hadoop 1.0.4升级上来的用户都会忘掉这一步
把如下信息放到oozie的conf/hadoop-conf/core-site.xml:
- <property>
- <name>mapreduce.jobhistory.webapp.address</name>
- <value>baby6:19888</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.intermediate-done-dir</name>
- <value>/user/yarn/tmp</value>
- </property>
- <property>
- <name>mapreduce.jobhistory.done-dir</name>
- <value>/user/yarn/done</value>
- </property>
复制代码
原因我估计是因为oozie-3.3.2对yarn的支持还不够,或者是因为我太弱了。
2.第二点也是因为升级hadoop才出现的,就是jobtracker的问题。hadoop 2.2.0中已经不存在jobtraker一说了,但oozie仍然需要这个参数,这显然还是版本兼容性的问题
解决方法很简单,把该填写jobtracker值的地方都填写上yarn.resourcemanager.address的值,默认的是 baby:8032,baby是你的主机名。一般需要在workflow或者job.properties里边改这个值,并且把yarn.resourcemanager.address写入到oozie的conf/hadoop-conf/core-site.xml里,就像前面第14条所说的。
引用:http://blog.csdn.net/teddeyang/article/details/16339533
|