欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

oozie 3.3.2在hadoop 2.2.0下的安装部署,及问题解决

程序员文章站 2022-05-08 20:59:26
...

oozie的安装部署及配置感觉不是一般的繁琐,而且层出不穷的bug也弄的我焦头烂额,下面主要讲下我的安装过程及遇到的问题 一.必要准备: 1.Apache的tomcat 2. mysql-connector-java-5.1.6.jar 或其他版本的 mysql-connectorjar 包 3.ext-2.2.zip 二.安装部

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安装目录下,解压shareexample(可选),clint三个tar包,如下:

oozie 3.3.2在hadoop 2.2.0下的安装部署,及问题解决

oozie-client-3.3.2.tar.gz

oozie-examples.tar.gz

oozie-sharelib-3.3.2.tar.gz

6.share tar包解压出来的文件夹,share,上传到hdfsoozie用户下:

hadoop fs –put share

7.oozie安装目录下新建文件夹libext,在第二步hadooplib目录下找到相应版本,在里边的target目录下可以找到对应的lib目录,把里边的所有jarcopy到新建的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 jarcopyliblibext

11. 环境变量

etc/profile:主要是设置oozieapache,如下

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

oozie.service.JPAService.create.db.schema

true

13. 在hadoop的core-site.xml中添加如下,oozie为用户名,hadoop为oozie所在的

hadoop.proxyuser.oozie.hosts

192.168.237.128

hadoop.proxyuser.oozie.groups

hadoop

14.在oozie目录下conf/hadoop-conf下,修改core-site.xml文件,添加:

yarn.resourcemanager.address

baby6:8032

yarn.resourcemanager.scheduler.address

master:8030

15.现在可以启动了,bin下执行oozie-start.sh



启动之后正常的话,可以在网页上看到如下界面,这就表示看上去成功了:

oozie 3.3.2在hadoop 2.2.0下的安装部署,及问题解决

oozie 3.3.2在hadoop 2.2.0下的安装部署,及问题解决


二.常见的问题:

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:


mapreduce.jobhistory.webapp.address
baby6:19888


mapreduce.jobhistory.intermediate-done-dir
/user/yarn/tmp


mapreduce.jobhistory.done-dir
/user/yarn/done


原因我估计是因为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条所说的