Oozie(CDH)安装记录

版权声明:本文为博主原创文章,欢迎转载,转载请注明出处。 https://blog.csdn.net/u012802702/article/details/68070699
     Oozie安装记录
前言:
    测试发现,集群中在安装Hue的节点安装oozie时,只要启动oozie,Hue会自动接管,并可以直接使用Hue操作Oozie。而不用额外的配置Hue.ini文件。但需要将Hue与Oozie安装在同一节点下面。

注意事项:
     一、hue不用另外配置oozie,只要开启oozie服务,hue就可以直接接管oozie
      二、当hue.ini配置文件中使用Hadoop集群名称时,在添加oozie时,正常的hive均可以识别并执行MapReducer程序。但是oozie无法自动识别nameServer的名字(ns1),只能指定为主机IP
否则会报一下错误:
    oozie报错Caused by: java.io.IOException: Cannot initialize Cluster. Please check your configuration fo
    三、关于oozie的编译略,之后补充。

一、解压:oozie-hadooplibs-4.1.0-cdh5.8.0.tar.gz
会在当前目录下生成一个目录:
    ./oozie-4.1.0-cdh5.8.0/hadooplibs/
该目录中有当前CDH的相关依赖,


二、在oozie安装目录下创建libext/目录:并将hadoop包、MySql驱动,ext-2.2.zip,拷贝进去。
 cp  HADOOP_HOME/share/hadoop/*/hadoop-*.jar./libext/
 cp  HADOOP_HOME /share/hadoop/*/lib/*.jar./libext/
 cp  mysql-connector-java-5.1.29-bin.jar libext/

    注此时需要检查tomcat中即:$OOZIE_HOME/oozie-server/lib/目录下的文件都有哪些,是否有包与上面的jar包冲突,如有冲突将,libext/目录中的jar包删除
   tomcat中的包如下:
annotations-api.jar
catalina-ant.jar
catalina-ha.jar
 catalina.jar
catalina-tribes.jar
ecj-4.3.1.jar
el-api.jar
jasper-el.jar
jasper.jar
jsp-api.jar
servlet-api.jar
tomcat-coyote.jar
tomcat-dbcp.jar
tomcat-i18n-es.jar
tomcat-i18n-fr.jar
tomcat-i18n-ja.jar

    根据经验需要删除包如下:
    一:如果是直接将Hadoop的jar包导入到libext中的
        把hadoop与tomcat冲突jar包去掉
            mv servlet-api-2.5.jar servlet-api-2.5.jar.bak
            mv jsp-api-2.1.jar jsp-api-2.1.jar.bak
            mv jasper-compiler-5.5.23.jar jasper-compiler-5.5.23.jar.bak
            mv jasper-runtime-5.5.23.jar jasper-runtime-5.5.23.jar.bak

    二:
        如果是使用oozie解压后自带的hadooplib-2.6.0-cdh5.8.0.oozie-4.1.0-cdh5.8.0则需要进行如下操作:    ./oozie-4.1.0-cdh5.8.0/hadooplibs/hadooplib-2.6.0-cdh5.8.0.oozie-4.1.0-cdh5.8.0/目录下的jar文件全部复制到libext中
            此时只需要将servlet-api-2.5.jar包去掉,
            mv servlet-api-2.5.jar servlet-api-2.5.jar.bak


三、添加OOZIE_HOME环境变量。
   

四、此外需要安装unzip、zip
yum install -y unzip
yum install -y zip

五、将oozie打包并发布到tomcat(即oozie-server)
oozie-setup.sh prepare-war -d /opt/oozie-4.1.0-cdh5.8.0/oozie-server/webapps/

注:执行上述操作后
/opt/oozie-4.1.0-cdh5.8.0/oozie-server/webapps目录下会生成一个文件:oozie.war  这个war包里的lib目录面就包含了libext里面的jar包和extjs的组件(但此时lib里面的extjs的组件是以ext-2.2.zip形式存在的,无法读取,需要将其解压到/opt/oozie-4.1.0-cdh5.8.0/oozie-server/webapps/oozie目录下)

六、解压目录 oozie-sharelib-4.1.0-cdh5.8.0.tar.gz
 tar zxvf oozie-sharelib-4.1.0-cdh5.8.0.tar.gz
 会在$OOZIE_HOME/  目录下生成一个share/目录


七、配置Hadoop的core-site.xml文件:使oozie用户可以操作hdfs
        <property>
          <name>hadoop.proxyuser.oozie.hosts</name>
          <value>*</value>
        </property>
        <property>
          <name>hadoop.proxyuser.oozie.groups</name>
          <value>*</value>
        </property>



八、将share目录文件上传HDFS执行下面指令:

    oozie-setup.sh sharelib create -fs hdfs://10.1.1.8:8020 -locallib /opt/oozie-4.1.0-cdh5.8.0/share

    会将上面解压生成的share/lib目录中的所有文件上传到hdfs上(默认会在hdfs: /user/oozie/share/lib/ 即使用哪个用户执行就会在哪个用户的hdfs目录下。且会在后面加一个时间戳)

    注:理论上应该使用oozie用户执行上面的命令且在此之前需要配置hadoop的core-site.xml文件:
        <property>
          <name>hadoop.proxyuser.oozie.hosts</name>
          <value>*</value>
        </property>
        <property>
          <name>hadoop.proxyuser.oozie.groups</name>
          <value>*</value>
        </property>
    但是,在实际的10.1.1.8节点操作时,使用oozie用户提示没有权限,故只能被迫使用root用户执行了上述命令,所以最终生成的HDFS目录如下:
        /user/root/share/lib/


九、创建oozie数据库
     创建数据库:
    创建用户:
    CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie';
    权限:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO 'oozie'@'%' IDENTIFIED BY 'oozie' WITH GRANT OPTION;

    修改$OOZIE_HOME/conf/oozie-site.xml添加以下配置项:

    <property> 
        <name>oozie.service.JPAService.create.db.schema</name> 
        <value>true</value> 
    </property> 
    <property> 
        <name>oozie.service.JPAService.jdbc.driver</name> 
        <value>com.mysql.jdbc.Driver</value> 
    </property> 
    <property> 
        <name>oozie.service.JPAService.jdbc.url</name> 
        <value>jdbc:mysql://10.1.1.8:3306/oozie?createDatabaseIfNotExist=true</value> 
    </property> 

    <property> 
        <name>oozie.service.JPAService.jdbc.username</name> 
        <value>root</value> 
    </property> 

    <property> 
        <name>oozie.service.JPAService.jdbc.password</name> 
        <value>***</value> 
    </property> 
    <property> 
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> 
        <value>*=/opt/hadoop-2.6.0-cdh5.8.0/etc/hadoop/</value> 
    </property>

十、初始化数据库
    在上面配置的数据库中(Mysql)生成oozie相应的表:同时初始化oozie的DB环境  
注意:直接复制该语句可能hi出问题,最好手动输入  
    bin/ooziedb.sh create -sqlfile oozie.sql –run
   
    查看数据库oozie是否生成了oozie的相关表。


十一、启动服务
    bin/oozied.sh start
    访问控制台 http://hadoop1:11000/oozie  hadoop1为我的主机名

正确启动显示如下:
    [root@master02 ~]# oozied.sh start

    Setting OOZIE_HOME:          /opt/oozie-4.1.0-cdh5.8.0
    Setting OOZIE_CONFIG:        /opt/oozie-4.1.0-cdh5.8.0/conf
    Sourcing:                    /opt/oozie-4.1.0-cdh5.8.0/conf/oozie-env.sh
      setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
    Setting OOZIE_CONFIG_FILE:   oozie-site.xml
    Setting OOZIE_DATA:          /opt/oozie-4.1.0-cdh5.8.0/data
    Setting OOZIE_LOG:           /opt/oozie-4.1.0-cdh5.8.0/logs
    Setting OOZIE_LOG4J_FILE:    oozie-log4j.properties
    Setting OOZIE_LOG4J_RELOAD:  10
    Setting OOZIE_HTTP_HOSTNAME: master02.yscredit.com
    Setting OOZIE_HTTP_PORT:     11000
    Setting OOZIE_ADMIN_PORT:     11001
    Setting OOZIE_HTTPS_PORT:     11443
    Setting OOZIE_BASE_URL:      http://master02.yscredit.com:11000/oozie
    Setting CATALINA_BASE:       /opt/oozie-4.1.0-cdh5.8.0/oozie-server
    Setting OOZIE_HTTPS_KEYSTORE_FILE:     /root/.keystore
    Setting OOZIE_HTTPS_KEYSTORE_PASS:     password
    Setting OOZIE_INSTANCE_ID:       master02.yscredit.com
    Setting CATALINA_OUT:        /opt/oozie-4.1.0-cdh5.8.0/logs/catalina.out
    Setting CATALINA_PID:        /opt/oozie-4.1.0-cdh5.8.0/oozie-server/temp/oozie.pid

    Using   CATALINA_OPTS:        -Xmx1024m -Dderby.stream.error.file=/opt/oozie-4.1.0-cdh5.8.0/logs/derby.log
    Adding to CATALINA_OPTS:     -Doozie.home.dir=/opt/oozie-4.1.0-cdh5.8.0 -Doozie.config.dir=/opt/oozie-4.1.0-cdh5.8.0/conf -Doozie.log.dir=/opt/oozie-4.1.0-cdh5.8.0/logs -Doozie.data.dir=/opt/oozie-4.1.0-cdh5.8.0/data -Doozie.instance.id=master02.yscredit.com -Doozie.config.file=oozie-site.xml -Doozie.log4j.file=oozie-log4j.properties -Doozie.log4j.reload=10 -Doozie.http.hostname=master02.yscredit.com -Doozie.admin.port=11001 -Doozie.http.port=11000 -Doozie.https.port=11443 -Doozie.base.url=http://master02.yscredit.com:11000/oozie -Doozie.https.keystore.file=/root/.keystore -Doozie.https.keystore.pass=password -Djava.library.path=

    Using CATALINA_BASE:   /opt/oozie-4.1.0-cdh5.8.0/oozie-server
    Using CATALINA_HOME:   /opt/oozie-4.1.0-cdh5.8.0/oozie-server
    Using CATALINA_TMPDIR: /opt/oozie-4.1.0-cdh5.8.0/oozie-server/temp
    Using JRE_HOME:        /opt/jdk1.7.0_80
    Using CLASSPATH:       /opt/oozie-4.1.0-cdh5.8.0/oozie-server/bin/bootstrap.jar
    Using CATALINA_PID:    /opt/oozie-4.1.0-cdh5.8.0/oozie-server/temp/oozie.pid
    Existing PID file found during start.
    Removing/clearing stale PID file




===============================================================================================
报错时可以查看安装目录下的logs目录。查找问题所在:

可能会报错:


错误一:
    ERROR: Oozie could not be started

    REASON: java.lang.NoClassDefFoundError: org/apache/hadoop/util/ReflectionUtils

    Stacktrace:
    -----------------------------------------------------------------
    java.lang.NoClassDefFoundError: org/apache/hadoop/util/ReflectionUtils
            at org.apache.oozie.service.Services.setServiceInternal(Services.java:377)
            at org.apache.oozie.service.Services.<init>(Services.java:111)
            at org.apache.oozie.servlet.ServicesLoader.contextInitialize    d(ServicesLoader.java:45)
            at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4210)
    ...skipping...

    原因是由于指令    oozie-setup.sh prepare-war -d /opt/oozie-4.1.0-cdh5.8.0/oozie-server/webapps   在打包的时候将部分hadoop相关的包丢失了,
    故需要手动将libext、目录中的jAr文件导入到的Tomcat的下的/oozie-server/webapps/oozie项目中:
        cp /opt/oozie-4.1.0-cdh5.8.0/libext/*.jar /opt/oozie-4.1.0-cdh5.8.0/oozie-server/webapps/oozie/WEB-INF/lib
    重新启动服务
        bin/oozied.sh start
        访问控制台http://hadoop1:11000/oozie  hadoop1为主机名

错误二:
    访问控制台http://hadoop1:11000/oozie  hadoop1 主机名
    页面提示:
    Oozie web console is disabled.
    To enable Oozie web console install the Ext JS library.
    Refer to Oozie Quick Start documentation for details.

    下载ext2.2.zip并解压到$OOZIE_HOME/oozie-server/webapps/oozie目录下。
    unzip $OOZIE_HOME/libext/ext-2.2.zip -d $OOZIE_HOME/oozie-server/webapps/oozie

错误三:
错误1:JA009: Unknown rpc kind in rpc headerRPC_WRITABLE 
解决:如果采用hadoop2xx,oozie的war包打入了mr1系列的jar,去掉即可(就是拷贝hadoop相关包到libext里面的时候,把mapreduce1里面的jar拷贝进去了,查找带mr1的jar包去掉即可)
=================================================================================================   

猜你喜欢

转载自blog.csdn.net/u012802702/article/details/68070699