zoukankan      html  css  js  c++  java
  • Oozie-1-安装、配置 让Hadoop流动起来

    版权声明:本文为博主原创文章,未经博主同意不得转载。

    https://blog.csdn.net/wl101yjx/article/details/27881739

    写在前面一:

    本文总结 基于Hadoop的工作流调度系统——Oozie


    写在前面二:

    使用软件说明:


    约定全部软件的存放文件夹:/home/yujianxin

    一、什么是Oozie

    1、Oozie是一个开源的基于Hadoop的工作流调度系统,用于执行Hadoop Map/Reduce和Pig 任务工作流。同一时候Oozie还是一个Java Web程序。执行在Java Servlet容器中,如Tomcat。
    2、 Oozie工作流中拥有多个Action,如Hadoop Map/Reuce job,Hadoop Pig job等。全部的Action以有向无环图(DAG Direct Acyclic Graph)的模式部署执行.所以在Action的执行步骤上是有方向的,仅仅能上一个Action执行完毕后才干执行下一个Action。

    3、Oozie工作流通过HPDL(一种通过XML自己定义处理的语言。相似JBOSS JBPM的JPDL)来构造。
    4、 Oozie工作流中的Action在远程系统执行如(Hadoop。Pig服务器上)。

    一旦Action完毕。远程服务器将回调Oozie的接口并通知Action已经完毕,这时Oozie又会以相同的方式执行工作流中的下一个Action。直到工作流中全部Action都完毕(完毕包括失败)。


           Oozie工作流中包括可控制的工作流节点(control flow node)和Action节点(action node).
           Control flow node事实上能够理解为Oozie的语法,比方能够定义開始(start),结束(end)。失败(fail)节点.開始节点就表示从该节点開始执行.同一时候也提供一种机制去控制工作流的执行过程,如选择(decision),并行(fork),join节点.
           Oozie工作流提供各种类型的Action用于支持不同的须要,如Hadoop Map/Reduce,Hadoop File System。PigHive,Streaming,SSH,HTTP。Email。Java,以及Oozie子流程.Oozie也支持自己定义扩展以上各种类型的Action .
           Oozie工作流同意自己定义參数,如${inputDir}.
           Oozie使用自己定义的xml语言hPDL来定义工作流。
           Oozie使用MySQL存储元数据。

    二、Oozie安装配置

    安装Oozie Server
    Oozie Server能够为我们提供非常多管理Job的便捷功能,比方。通过可视化界面去管理Job的执行状态。同一时候也支持我构建含有多个复杂Hadoop Job流程,各个Job之间的依赖关系全然能够通过一个工作流配置文件组装起来。然后由Oozie Server其管理执行。

    2.1、安装Maven。參考http://blog.csdn.net/aaronhadoop/article/details/27834181

    2.2、安装MySQL,參考http://blog.csdn.net/aaronhadoop/article/details/24748411

    2.3、安装Tomcat。參考http://blog.csdn.net/aaronhadoop/article/details/24748057

    2.3、安装Oozie

    2.3.1、使用Maven构建oozie

    <span style="font-family:SimSun;">cd /home/yujianxin/oozie
    tar -zxvf oozie-3.3.2.tar.gz
    cd /home/yujianxin/oozie/oozie-3.3.2
    bin/mkdistro.sh -DskipTests</span>

    构建后可在oozie-3.3.2/distro/target文件夹下看到构建后的文件,我的路径是:/home/yujianxin/Ooize/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2。

    约定此文件夹为Oozie的安装文件夹。



    2.3.2、加入环境变量


    2.3.3、在$OOZIE_HOME下创建文件夹libext。并将ext的包、MySQL的驱动包和hadoop相关的jar库文件复制到libext下面

    <span style="font-family:SimSun;">cp /home/yujianxin/Oozie/ext-2.2.zip $OOZIE_HOME/libext/
    cp /home/yujianxin/hive/hive-0.9.0/lib/mysql-connector-java-5.1.10.jar ./libext/
    cp /home/yujianxin/hadoop/hadoop-1.1.2/hadoop-*.jar ./libext/
    cp /home/yujianxin/hadoop/hadoop-1.1.2/lib/*.jar ./libext/
    </span>
    2.3.4、执行下面命令開始安装

    <span style="font-family:SimSun;">cd $OOZIE_HOME
    bin/oozie-setup.sh prepare-war</span>
    生成$OOZie/oozie-server/webapps/oozie.war文件



    2.3.5、配置Oozie

    <span style="font-family:SimSun;">cd /home/yujianxin/Oozie/oozie-3.3.2/distro/target/oozie-3.3.2-distro/oozie-3.3.2/conf
    vi oozie-site.xml
    
      <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://222.22.91.68: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>zutcs_root_68</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></span>
    默认情况下,Oozie的配置中有个配置项oozie.service.JPAService.create.db.schema,值为false,设置非自己主动创建数据库,我们保持默认设置,这样能够通过手动创建Oozie数据库,并对其进行权限控制。然后,我们在MySQL数据库中创建数据库,名称为oozie,并进行訪问授权:
    CREATE DATABASE oozie;
    GRANT ALL ON oozie.* TO 'shirdrn'@'oozie-server' IDENTIFIED BY '0o21e';
    FLUSH PRIVILEGES;

    然后能够执行例如以下命令。生成Oozie所须要的数据表:
    bin/ooziedb.sh create -sqlfile oozie.sql -run
    启动Oozie
    cd $OOZIE_HOME
    bin/oozied.sh start


    查看图形化界面
    http://slave3:11000/oozie


    2.3.6、整合Oozie和Hadoop

    <span style="font-family:SimSun;"><!-- OOZIE -->
    <property>
         <name>hadoop.proxyuser.root(username).hosts</name>
         <value>192.168.131.133</value>
    </property>
    <property>
         <name>hadoop.proxyuser.root(username).groups</name>
         <value>root</value>
    </property></span>
    重新启动Hadoop集群。


    安装Oozie Client

        我们能够通过在外部的一个Oozie客户端去提交工作流任务,实际上就是一个客户端程序,通过与Oozie Server进行交互。提交任务,并由Oozie Server去调用执行。

    回到oozie-3.3.2.tar.gz解压缩的文件夹下。通过前面的构建,如今已经能够看到有一个client文件夹,该文件夹下就是Oozie的客户端相关文件。

        含有Oozie客户端脚本的路径,我这里为/home/yujianxin/Oozie/oozie-3.3.2/client/target/oozie-client-3.3.2-client/oozie-client-3.3.2。

        查看Oozie客户端执行job命令的帮助信息

    <span style="font-family:SimSun;">cd /home/yujianxin/Oozie/oozie-3.3.2/client/target/oozie-client-3.3.2-client/oozie-client-3.3.2
    bin/oozie help
    bin/oozie help job</span>
    我们能够找到。Oozie发行包中自带的examples。我这里相应的文件夹是/home/yujianxin/Oozie/oozie-3.3.2/examples/target/oozie-examples-3.3.2-examples/examples/apps,我们能够通过执行这些样例来验证安装是否成功。执行下面命令

    <span style="font-family:SimSun;">hadoop fs -put /home/yujianxin/Oozie/oozie-3.3.2/examples/target/oozie-examples-3.3.2-examples/ /Oozie/child1/examples</span>
    我们拿examples中的map-reduce来进行验证,改动job.properties文件,配置内容例如以下所看到的:
    <span style="font-family:SimSun;">cd /home/yujianxin/Oozie/oozie-3.3.2/examples/target/oozie-examples-3.3.2-examples/examples/apps/map-reduce
    改动job.properties
    nameNode=hdfs://slave3:9000
    jobTracker=slave3:9001
    queueName=default
    examplesRoot=examples
    
    oozie.wf.application.path=${nameNode}/Oozie/child1/examples/oozie-examples-3.3.2-examples/examples/apps/map-reduce
    
    outputDir=map-reduce_yjx</span>
    执行任务

    <span style="font-family:SimSun;">cd /home/yujianxin/Oozie/oozie-3.3.2/client/target/oozie-client-3.3.2-client/oozie-client-3.3.2
    </span>


    通过OozieWeb管理控制台查看提交执行的任务


    点击详细某个job


    查看作业执行的拓扑图


    此处仅仅是实现了Oozie的安装、配置及測试了官方自带的程序。在项目中的实际应用欢迎qq(1152596901)交流




查看全文
  • 相关阅读:
    node.js基础
    JQuery Ajax实例
    数组的模3特性
    浅析Java抽象类和接口的比较
    乐于分享是促进程序员进步非常重要的一个关键点【转载】
    网络图片的加载
    听一下牛人是怎样自学MIT计算机系全部课程的[转]
    我们为什么活着?别在20岁的时候过40岁的生活【转】
    根据字体多少使UILabel自动调节尺寸
    一个博士生学位论文致谢部分
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10551229.html
  • Copyright © 2011-2022 走看看