zoukankan      html  css  js  c++  java
  • Oozie4.2 安装部署、以及example测试

    编译:

    使用的环境是:Hadoop2.6.0、Spark1.4.0、Hive0.13.1、Sqoop1.4.4

    编译Oozie的命令:./mkdistro.sh -Phadoop-2 -Dhadoop.auth.version=2.6.0 -Ddistcp.version=2.6.0 -Dsqoop.version=1.4.4 -Dhive.version=0.13.1 -Dpig.version=0.15.0

    (突然发现,编译时没有指定Spark的版本)

    经过艰难漫长的编译过程,最后得到了oozie-4.2.0-distro.tar.gz。

    Oozie4.2 Server安装

    所需环境:

    Unix (tested in Linux and Mac OS X)

    Java 1.6+

    Hadoop(tested with 1.0.0 & 0.23.1)

    ExtJS library (可选, 用于Oozie webconsole,本文档中使用)

    MySQL(可选,本文档中使用)

    开始安装:

    将编译好的oozie-4.2.0-distro.tar.gz解压到/opt下

    1、修改环境变量

    vim /etc/profile,加入OOZIE_HOME这个环境变量,并在PATH中加入$OOZIE_HOME/bin,保存退出,然后执行source  /etc/profile

    2、修改/opt/oozie-4.2.0/conf下的 oozie-site.xml文件,在oozie-site.xml中增加以下配置信息:

    <!--mysql作为元数据存放的数据库-->
    <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://192.168.127.11:3306/oozie</value>
        <description>
            JDBC URL.
        </description>
    </property>
    <property>
        <name>oozie.service.JPAService.jdbc.username</name>
        <value>root</value>
        <description>
            DB user name.
        </description>
    </property>
    <property>
        <name>oozie.service.JPAService.jdbc.password</name>
        <value>123456</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>
    <!--设置Hadoop的配置文件的路径-->
    <property>
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
        <value>*=/opt/hadoop-2.6.0/etc/hadoop</value>
        <description>
            Comma separated AUTHORITY=HADOOP_CONF_DIR, where AUTHORITY is the HOST:PORT of
            the Hadoop service (JobTracker, YARN, HDFS). The wildcard '*' configuration is
            used when there is no exact match for an authority. The HADOOP_CONF_DIR contains
            the relevant Hadoop *-site.xml files. If the path is relative is looked within
            the Oozie configuration directory; though the path can be absolute (i.e. to point
            to Hadoop client conf/ directories in the local filesystem.
        </description>
    </property>
    <!--设置Spark的配置文件的路径-->
    <property>
        <name>oozie.service.SparkConfigurationService.spark.configurations</name>
        <value>*=/opt/spark-1.4.0-bin-hadoop2.6-hive/conf</value>
        <description>
            Comma separated AUTHORITY=SPARK_CONF_DIR, where AUTHORITY is the HOST:PORT of
            the ResourceManager of a YARN cluster. The wildcard '*' configuration is
            used when there is no exact match for an authority. The SPARK_CONF_DIR contains
            the relevant spark-defaults.conf properties file. If the path is relative is looked within
            the Oozie configuration directory; though the path can be absolute.  This is only used
            when the Spark master is set to either "yarn-client" or "yarn-cluster".
        </description>
    </property>
    <!--
    设置系统库存放在hdfs中,注意只有在job.properties中将设置oozie.use.system.libpath=true才会引用系统库
    。注意,下面ns1是namenode的逻辑名称,根据自己集群的情况进行更改即可-->
    <property>
        <name>oozie.service.WorkflowAppService.system.libpath</name>
        <value>hdfs://ns1/user/${user.name}/share/lib</value>
        <description>
            System library path to use for workflow applications.
            This path is added to workflow application if their job properties sets
            the property 'oozie.use.system.libpath' to true.
        </description>
    </property>

     3、在Hadoop配置文件的core-site.xml中增加如下配置信息。注意:修改完后,需要重启hadoop。

        <!--
        <property>
            <name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name>
            <value>[OOZIE_SERVER_HOSTNAME]</value>
        </property>
        <property>
            <name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name>
            <value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value>
        </property>
        其中[OOZIE_SERVER_USER]是安装使用oozie server的用户
            [OOZIE_SERVER_HOSTNAME]是安装oozie server的主机名
            [USER_GROUPS_THAT_ALLOW_IMPERSONATION]是用户的所属组
         以上汉字纯属个人见解,如有问题欢迎指正
        -->
        <!-- OOZIE -->
    <property>
            <name>hadoop.proxyuser.root.hosts</name>
            <value>centos01</value>
        </property>
        <property>
            <name>hadoop.proxyuser.root.groups</name>
            <value>root</value>
        </property>
    

    注意:在hadoop.proxyuser.root.groups的值改成*,也是可以运行的。

    4、在/opt/oozie-4.2.0目录下创建一个libext目录,并在/opt/hadoop-2.6.0目录下使用以下命令将Hadoop下的所有jar包复制到libext目录中:find -name *.jar |xargs  -t -i cp {} /opt/oozie-4.2.0/libext。注意:需要将libext中的hsqldb-2.0.0.jar删掉,否则会引起jar包冲突。

    5、将下载好的ext-2.2.zip以及mysql驱动包(例如:mysql-connector-java-5.1.35.jar)复制到libext目录下。

    6、执行下面的命令,将ext2.2.0.zip、hadoop的相关jar包、以及mysql-connector-java-<版本>.jar、htrace-core-<版本>.jar、avro-<版本>.jar 打进新war包里:

    bin/addtowar.sh -inputwar oozie.war  -outputwar oozie-server/webapps/oozie.war -hadoop 2.6.0 /opt/hadoop-2.6.0/ -extjs libext/ext-2.2.zip -jars /opt/oozie-4.2.0/libext/mysql-connector-java-5.1.35.jar:/opt/oozie-4.2.0/libext/htrace-core-3.0.4.jar:/opt/oozie-4.2.0/libext/avro-1.7.4.jar

    注意:

    1) htrace-core和avro这两个jar包不加的话,后面提交job时会出错!并且执行了上面这句后,就不能再执行bin/oozie-setup.sh prepare-war 了,否则替换掉oozie-server/webapps/中已经生成的oozie.war。

    2)在ubuntu上执行上面命令时遇到zip:command not found;Failed:Creating new Oozie WAR的问题。这是因为没有安装Zip导致的。装上即可。

    7、如果还没有安装mysql,那么需要安装一个mysql。安装好后吗,在mysql数据库中创建名为oozie的数据库(注意:oozie-site.xml中有个配置项oozie.service.JPAService.create.db.schema,默认值为false,表示非自动创建数据库,所以我们需要自己创建oozie数据库),并进行访问授权,然后在/opt/oozie-4.2.0/下执行:

    bin/ooziedb.sh create -sqlfile oozie.sql -run

    查看oozie数据库,如果产生了以下的表,就说明该步骤OK

    8、安装oozie-sharelib。

    1) 在oozie-4.2.0目录下有一个 oozie-sharelib-4.2.0.tar.gz。使用tar -zxvf oozie-sharelib-4.2.0.tar.gz将它解压。解压出后是一个share目录

    2)进入到share/lib/sqoop中。将sqoop-1.4.6-hadoop100.jar去掉(我这边改成sqoop-1.4.6-hadoop100.jar.bak)

    注意:之所以要将sqoop-1.4.6-hadoop100.jar去掉,是因为我发现,在不去掉的情况下,运行Sqoop的例子会报错。这个错误可能是sqoop-1.4.6-hadoop100和sqoop-1.4.4-hadoop200.jar中的类冲突导致的。去掉之后,就可以成功运行了。

    3)将mysql-connector-java-5.1.35.jar复制到/opt/oozie-4.2.0/share/lib/sqoop目录中。如果没有这个jar,将不能从mysql将数据导入或导出。

    3)将这个share上传到hdfs上:

    hdfs dfs -put  /opt/oozie-4.2.0/share  /user/root

    注意,与oozie-site.xml中的oozie.service.WorkflowAppService.system.libpath的值保持一致,所以必须放到/user/root这个目录下。

    9、使用以下命令启动oozie服务:

    bin/oozie-start.sh

    这时在/opt/oozie-4.2.0/oozie-server/webapps目录下多了oozie这个目录。如果缺少jar包或者jar包冲突了可以对

    /opt/oozie-4.2.0/oozie-server/webapps/oozie/WEB-INF/lib中的进行添加或删除jar包


    10、使用以下命令验证服务是否启动成功,

    oozie admin -oozie http://localhost:11000/oozie -status

    如果是System model:Normal,表明启动成功,否则失败。
    11、查看是否可以通过浏览器访问web页面:

    http://192.168.127.11:11000/oozie/

    12、在运行job之前,最好开启Hadoop的jobhistory。它可以帮助你查看job调度时产生的日志。启动命令:

    mr-jobhistory-daemon.sh start historyserver

    使用jps命令查看是否启动成功,如果出现了 JobHistoryServer进程,表示启动成功。

     (如果在第3步中hadoop还没有重启,需要重启下,否则后面的job可能会运行失败)

    Oozie4.2 Client安装

    Oozie server 安装中已经包括了Oozie client。如果想要在其他机子上也使用Oozie,那么只要在那些机子上安装Oozei的client即可。

    所需环境:

    Unix (tested in Linux and Mac OS X)

    Java 1.6+

    开始安装

    1、Oozie4.2中有一个oozie-client-4.2.0.tar.gz,将它复制到需要安装oozie client的机子上

    2、解压:

    tar zxvf /data/insallers/oozie-client-4.2.0.tar.gz -C /opt

    这时在/opt下有一个 oozie-client-4.2.0

    3、添加环境变量:

    注意:上面还可以添加一个环境变量,export OOZIE_URL=http://centos01:11000/oozie这样在后面的oozie job这个命令中就不需要加 -oozie了

    4、然后可以直接使用oozie来操作了,例如:

    可以使用oozie job -oozie http://centos01:11000/oozie -config /data/installers/examples/apps/sqoop/job.properties -run 这样的命令来操作了。

     

    Oozie Examples

     1、在/opt/oozie-4.2.0下有一个oozie-examples.tar.gz 。将它进行解压,解压之后生成一个examples目录。在该目录的apps中有一些简单的例子:

     

     2、在运行这些例子之前,需要对这些例子进行一些修改,例如我们运行shell这个例子。

     

    先来查看一下job.properties的内容:

    这些例子中JobTracker 都是localhost:8021,NameNode 都是hdfs://localhost:8020 。这是hadoop1的端口。我们需要根据自己集群的情况,对它做相应的修改。我现在的hadoop集群是2.6.0版本的。并且NameNode和ResourceManager都是HA的。所以我的配置是:

    注意:这里ns1 是hadoop中hdfs-site.xml中的dfs.nameservices。rm1,rm2是yarn-site.xml中的yarn.resourcemanager.ha.rm-ids(如下2图)。如果ResourceManager不采用HA,采用的是单点,那么将8021这个端口改成8032端口(yarn.resourcemanager.address)。例如:ResourceManager所在的主机名centos03,那么改成jobTracker=centos03:8032即可。

    3、将examples这个文件上传到hdfs中的/user/${user.name} 中,我采用的是root这个用户,所以是/user/root

    4、执行以下命令运行
    oozie  job  -oozie  http://centos01:11000/oozie  -config  /data/installers/examples/apps/shell/job.properties  -run
    注意: -oozie 后面跟的是oozie server的地址,-config后面跟的是执行的脚本,除了在hdfs上要有一份examples,在本地也需要一份。这个命令中的/data/installers/examples/apps/shell/job.properties 是本地路径的job.properties,不是hdfs上的。
    5、根据上面的job Id ,可以使用下列命令进行查看
     oozie job -oozie http://centos01:11000/oozie -info 0000001-150804235314037-oozie-root-W
    6、根据上面的job Id ,可以使用下列命令进行日志

    oozie job -oozie http://centos01:11000/oozie -log 0000001-150804235314037-oozie-root-W

    7、可以访问http://centos01:11000/oozie 查看提交的job的情况:

    参考网站:

    https://hadooptutorial.info/oozie-share-lib-does-not-exist-error/#javaioFileNotFoundException_File_userusersharelib_does_not_exist
    http://blog.csdn.net/teddeyang/article/details/16339533
    http://oozie.apache.org/docs/4.2.0/AG_Install.html
    http://www.cloudera.com/content/cloudera/en/documentation/cdh4/v4-2-0/CDH4-Installation-Guide/cdh4ig_topic_17_6.html

    http://stackoverflow.com/questions/11555344/sqoop-export-fail-through-oozie

    以下主要是我在安装使用oozie时遇到的一些问题,如果按照上面的步骤安装使用,可能就不会出现下面的问题了,可以忽略不看!

    1、关于addtower命令:

    2、遇到过的问题:

    1)编译时出现,解决方法:手动下载maven-clean-plugin插件的jar

    2)编译时出现,解决方法:mvn dependency::tree

    3)编译时出现,解决方法:手动下载依赖

    4)安装时出现。解决方法:移除libext中的hsqldb-2.0.0.jar

    5) 安装时出现,使用“bin/addtowar.sh -inputwar oozie.war  -outputwar oozie-server/webapps/oozie.war -hadoop 2.6.0 /opt/hadoop-2.6.0/ -extjs libext/ext-2.2.zip”命令替代“bin/oozie-setup.sh prepare-war”这个命令来解决。原因可能是后面的命令会将libext中杂七杂八的jar包放入到oozie-server/webapps/oozie/WEB-INF/lib/ 中,引起jar包冲突等问题。

    6)有时出现无法启动或关闭oozie服务时,尝试将/opt/oozie-4.2.0/oozie-server/temp下的除了safeToDelete.tmp文件的其他文件删掉,即可(即只保留safeToDelete.tmp)。

    7) oozie服务启动失败:


    在/opt/oozie-4.2.0/logs中查看catalina.out这个日志,根据提示信息,应该是没有mysql驱动的原因。

    将mysql驱动包复制到oozie-server/webapps/oozie/WEB-INF/lib/下:

    cp libext/mysql-connector-java-5.1.35.jar  oozie-server/webapps/oozie/WEB-INF/lib/ 
    重新执行第9和第10步,现在oozie服务已经成功启动了:

    8)、提交job时出现“Error:HTTP error code:500:Internal Server Error”的问题

    发现在localhost.2015-08-03.log这个日志文件中记录了这个错误:

    解决方法:往oozie-server/webapps/oozie/WEB-INF/lib/ 中加入htrace-core-3.0.4.jar

    9)、job执行完成后出现。解决方法:往oozie-server/webapps/oozie/WEB-INF/lib/ 中加入avro-1.7.4.jar

    10)、执行sqoop相关jab后出现。解决方法:去掉share/lib/sqoop中的sqoop-1.4.6-hadoop100.jar


     

  • 相关阅读:
    单例模式
    HashSet、LinkedHashSet、SortedSet、TreeSet
    ArrayList、LinkedList、CopyOnWriteArrayList
    HashMap、Hashtable、LinkedHashMap
    andrew ng machine learning week8 非监督学习
    andrew ng machine learning week7 支持向量机
    andrew ng machine learning week6 机器学习算法理论
    andrew ng machine learning week5 神经网络
    andrew ng machine learning week4 神经网络
    vue组件监听属性变化watch方法报[Vue warn]: Method "watch" has type "object" in the component definition. Did you reference the function correctly?
  • 原文地址:https://www.cnblogs.com/ilinuxer/p/6804742.html
Copyright © 2011-2022 走看看