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

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-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

 

   <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



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


[置顶] oozie 3.3.2在hadoop 2.2.0下的安装部署,及问题解决_第1张图片


二. 常见的问题:

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条所说的






你可能感兴趣的:(hadoop,yarn,bug,oozie)