精华内容
参与话题
问答
  • Oozie基础入门

    万次阅读 2018-03-01 15:08:50
     因为工作需要用到oozie,但是网上的资料越看越迷茫,经过很大的努力,终于折腾清楚了,这里,做一个总结,帮助后来者更好地进行入门,当然,粗鄙之言,难免疏漏,欢迎交流指正   引入:  对于我们的工作,...

    前言:

           因为工作需要用到oozie,但是网上的资料越看越迷茫,经过很大的努力,终于折腾清楚了,这里,做一个总结,帮助后来者更好地进行入门,当然,粗鄙之言,难免疏漏,欢迎交流指正

     

    引入:

           对于我们的工作,可能需要好几个hadoop作业(job)来协作完成,往往一个job的输出会被当做另一个job的输入来使用,这个时候就涉及到了数据流的处理。

           我们不可能就盯着程序,等它运行完再去运行下一个程序,所以,一般的做法就是通过shell来做,但是如果涉及到的工作流很复杂(比方说有1,2,3,4四个作业,1的输出作为2 3 4的输入,然后2 3的结果运算之后再和1的结果进行某种运算……最后再输出)是很费时费力的。这里就用到了oozie——一个能把多个MR作业组合为一个逻辑工作单元(一个工作流),从而自动完成任务调用的工具。

     

    备注:oozie本质就是一个作业协调工具(底层原理是通过将xml语言转换成mapreduce程序来做,但只是在集中map端做处理,避免shuffle的过程。),所以我对它的暂时的定位就是会用,能解决问题就行,暂时没有进行深入研究。

     

    安装oozie

           安装方式主要是看hadoop的版本注1,我这里的是CDH的hadoop版本,用的也是cloudare的平台,所以涉及的是CDH的安装。

           CDH的oozie的安装一般是两种方式,一种是手动安装,还有一种是通过Cloudare Manager添加服务,它们主要的区别是通过Cloudare Manager添加服务安装的对应的hdfs上的oozie共享库(hdfs://user/oozie/share/lib)有对应的jar包,而手动安装的没有。注2

    注1:我接触过的有apache的hadoop,以及CDH的hadoop,用的顺手的还是CDH的hadoop,主要是因为cloudare manager这个监控平台的强大性能。

    注2:我采用的是添加服务,但是因为cloudare manager使用的是离线安装,oozie共享库中也没有jar包,手动添加一下就好了。

     

    关于控制台

           Oozie是有web界面提供的,可以直接进行web操作,后期方便又实用,但是这里有个坑通过添加服务打开的web界面上面显示如下图:

          

    具体的解决办法见下图圈住的。必须下载Ext-2.2.zip文件,但是这个文件在官网上是需要付费下载的,而且国内的CSDN都需要付费下载,找了好久才找到。

        

    下载好的文件安装包之后通过 unzip命令将zip解压到“/var/lib/oozie/目录下(unzip ext-2.2.zip -d /var/lib/oozie/),然后在CM的网页界面配置中启用web控制台,见如下图:

        

    重启完成之后控制台界面如下图:

    地址为:OozieserverIp:11000/oozie/  (OozieserverIp为oozie所在的服务器的ip地址)

        

    注:在配置任务的时候需要注意时区问题,这里的时区要与自己程序执行的主体所在平台的时区相一致。(Setting—>Timezone)

    主要概念

           Oozie主要有三个主要概念,分别是workflow,coordinator,bundle。

    Workflow:

           工作流,由我们需要处理的每个工作组成,进行需求的流式处理。

    Coordinator:

           协调器,可以理解为工作流的协调器,可以将多个工作流协调成一个工作流来进行处理。

    Bundle:

           捆,束。将一堆的coordinator进行汇总处理。

     

    简单来说,workflow是对要进行的顺序化工作的抽象,coordinator是对要进行的顺序化的workflow的抽象,bundle是对一堆coordiantor的抽象。层级关系层层包裹。

     

    网上找了一幅图来描述oozie各个组件之间的关系。

         

     

    关于oozie的作业

           这一段应该是工具使用的大头,但是关于这部分网上的资料很多,这里也是做一个入门级的介绍

           Oozie的作业有三部分组成,分别是job.properties,workflow.xml,lib文件夹。下面分别介绍

    Job.properties

           从名称也能看出来,这个文件是用来配置作业(job)中用到的各种参数的,总结如下

    nameNode

    hdfs地址

    jobTracker

    jobTracker(ResourceManager)地址

    queueName

    Oozie队列(默认填写default)

    examplesRoot

    全局目录(默认填写examples)

    oozie.usr.system.libpath

    是否加载用户lib目录(true/false)

    oozie.libpath

    用户lib库所在的位置

    oozie.wf.application.path

    Oozie流程所在hdfs地址(workflow.xml所在的地址)

    user.name

    当前用户

    Coordinator:oozie.coord.application.path

    Coordinator.xml地址(没有可以不写)

     

    Bundle:oozie.bundle.application.path

    Bundle.xml地址(没有可以不写)

    注:1、这个文件如果是在本地通过命令行进行任务提交的话,这个文件在本地就可以了,当然也可以放在hdfs上,与workflow.xml和lib处于同一层级。

    2、nameNode,jobTracker和workflow.xml在hdfs中的位置必须设置。

           eg:启动任务

           ooziejob -oozie http://oozieServerIp:11000/oozie/-config job.properties-run

    一个简单的job.properties文件如下:

           Shell节点的job.properties文件:

    nameNode=hdfs://cm1:8020

    jobTracker=cm1:8032

    queueName=default

    examplesRoot=examples

     

    oozie.wf.application.path=${nameNode}/user/workflow/oozie/shell

    workflow.xml:

           这个文件是定义任务的整体流程的文件,需要注意的有三点:版本信息,EL函数,节点信息。

           先上一个例子:

    1.  <workflow-app xmlns="uri:oozie:workflow:0.4" name="${sys_name}-MonitorPlus-Task-${task_id}">  

    2.      <start to=“check-xxx-succ-flag"/>  

    3.    

    4.      <decision name=“check-xxx-succ-flag">  

    5.          <switch>  

    6.  <case to="check-mr-succ-flag">${fs:exists(concat(concat("/xxx/output/xxxList/",   

    7.       task_id),"/_SUCCESS"))}</case>  

    8.  <default to=“do-xxx"/>  

    9.          </switch>  

    10.     </decision>  

    11.   

    12.     <decision name="check-mr-succ-flag">  

    13.         <switch>  

    14.             <case to="end">${fs:exists(concat(concat(“/xxx/output/", task_id),"/_SUCCESS"))}</case>  

    15.             <default to="do-mr"/>  

    16.         </switch>  

    17.     </decision>  

    18.   

    19.     <action name=“do-xxx" retry-max="3" retry-interval="10">  

    20.         <java>  

    21.             <job-tracker>${jobTracker}</job-tracker>  

    22.             <name-node>${namenode}</name-node>  

    23.             <configuration>  

    24.                 <property>  

    25.                     <name>mapreduce.job.queuename</name>  

    26.                     <value>${queueName}</value>  

    27.                 </property>  

    28.             </configuration>  

    29.            <main-class>com.xxx.Main</main-class>       

    30.          </java>

    31.        <ok to=”end”/>

    32.        <error to=”fail”/>

    33.     </action>

    34.     <kill name=”fail”>

    35.         <message>Map/Reduce failed.error message[${wf:errorMessage(wf:lastErrorNode())}]</message>

    36.     </kill>

    37.     <end name=”end”/>

    38. </workflow-app>

    版本信息:

           这个是写在第一行的,如下:

    <workflow-app xmlns="uri:oozie:workflow:0.4" name="${sys_name}-MonitorPlus-Task-${task_id}">

    在xmls属性中定义了workflow的版本为0.4,workflow的版本不能高于oozie兼容的最高版本,可以降低。

    EL函数

           但凡涉及到“${ }”这样的符号基本都是EL函数,花括号中写的是需要的函数信息。当然,如果是在job.properties中设置的常量也可以通过EL函数取出来,例如“${nameNode}”。常用的EL函数有基本的EL函数,workFlow EL函数和HDFSEL函数。分别如下:

              

            

            

     

    节点:

           Oozie的节点分成两种,流程控制节点和动作节点。所谓的节点实际就是一组标签。两种节点分别如下:

    n  流程控制节点

    u  <start />——定义workflow的开始

    u  <end />——定义workflow的结束

    u  <decision />——实现switch功能

    <switch><case /><default /></switch>标签连用

    u  <sub-workflow>——调用子workflow

    u  <kill />——程序出错后跳转到这个节点执行相关操作

    u  <fork />——并发执行workflow

    u  <join />——并发执行结束(与fork一起使用)

    案例;

        

            

    n  动作节点

    u  <shell />——表示运行的是shell操作

    u  <java />——表示运行的java程序

    u  <fs />——表示是对hdfs进行操作

    u  <MR />——表示进行的是MR操作

    u  <hive />——表示进程的是hive操作

    u  <sqoop />——表示进行的是sqoop的相关操作

    Workflow.xml综述

           文件需要被放在HDFS上才能被oozie调度,如果在启动需要调动MR任务,jar包同样需要在hdfs上。最终的目录结构如下:

      /xxx/oozie/workflow.xml  

    /xxx/oozie/lib  

    /xxx/oozie/lib/mr-1.7-SNAPSHOT-package.jar  

    /xxx/oozie/lib/xxx.mr-1.7-SNAPSHOT-package.jar 

    Lib文件夹:

           在workflow工作流定义的同级目录下,需要有一个lib目录,在lib目录中存在java节点MapReduce使用的jar包。需要注意的是,oozie并不是使用指定jar包的名称来启动任务的,而是通过制定主类来启动任务的。在lib包中绝对不能存在某个jar包的不同版本,不能够出现多个相同主类。

     

    Oozie Cli命令:

           这个是oozie的客户端使用的关于oozie job的命令,总结如下

    l  启动任务

    oozie job -oozie oozie_url -config job.properties_address-run

    l  停止任务

    oozie job -oozie oozie_url -kill jobId -oozie-oozi-W

    l  提交任务

    oozie job -oozie oozie_url -config job.properties_address -submit

    l  开始任务

    oozie job -oozie oozie_url -config job.properties_address -startJobId -oozie-oozi-W

    l  查看任务执行情况

    oozie job -oozieoozie_url -config job.properties_address -info jobId -oozie-oozi-W

     

    说明: 所有的命令都是以oozie job -oozie oozie_url 开头的-config 制定job.properties文件夹的位置,-run 文件启动后会返回一个唯一的jobId,供之后使用。

     

    启动任务,提交任务,开始任务的区别:

           提交任务是指将任务提交给oozie但是并不运行,也会返回一个唯一的jobId。 -submit

           开始任务是将提交的任务执行。-start

           启动任务=提交任务+开始任务

     

    展开全文
  • 从头开始 手把手 oozie 安装配置 with an example

    千次阅读 热门讨论 2018-06-15 07:35:46
    安装前准备 安装hadoop,可参考文章:https://blog.csdn.net/lucylove3943/article/details/80589422 不需要pig, hive, spark等等。就follow这两篇blog,一切搞定。 一些必要的安装工作 ...

    安装前准备

        安装hadoop,可参考文章:https://blog.csdn.net/lucylove3943/article/details/80589422

        不需要pig, hive, spark等等。就follow这两篇blog,一切搞定。    

     

    一些必要的安装工作

        Maven安装

                进入maven 下载页面:https://maven.apache.org/download.cgi,下载maven

       

            我是把下载的文件放在了/home文件夹下,直接解压:

     tar -xzvf apache-maven-3.5.3-bin.tar.gz 

           然后修改~/.bash_profile:

    export M2_HOME=/home/ubuntu/apache-maven-3.5.3
    export PATH=$PATH:$M2_HOME/bin

           同样的,修改完之后source一下:

    source ~/.bash_profile

        用以下代码测试一下安装是否成功:

    mvn -version

     

        安装mysql

     

        安装mysql server,命令行输入:

    sudo apt-get install mysql-server

        安装的时候会让你输入root账户的密码,这个就是之后登陆mysql的密码。安装mysql client,命令行输入:

    sudo apt install mysql-client

        安装相关lib包:

    sudo apt install libmysqlclient-dev

        下载需要的包

            我看到网上很多下载都需要积分,我打包了所有我自己单独下载的包,传了一份到百度网盘。

            链接: https://pan.baidu.com/s/1BImAWQeWIyrPjiiLupE6OQ 密码: 1m7p

            这里面一共有5个包,其中mysql-connector-java-8.0.11.jar和ext-2.2.zip是之后oozie要用到的,之后再说怎么用。

            另外三个包:网上有人建议把这三个包放在maven里面,后面oozie才能编译成功。我也不太确定我是否真的用上了,不过为了以防万一,我就这么办了。简单来说,就是把这三个包放在目录:apache-maven-3.5.3/lib/目录下。

     

    下载编译oozie

        进入oozie官网:http://oozie.apache.org, 我下载的是4.3.1版。

        下载之后解压:

    tar -xzvf oozie-4.3.1.tar.gz 

        进入目录,修改pox.xml文档:

    vim pom.xml 

        因为我之前的hadoop装的是2.6.5,所以我就修改成了2.6.5。下一步就是编译oozie了,我看网上挺多编译教程的,感觉大家都挺坎坷的,反正用如下的代码我挺顺利的,如果有遇见什么问题,可以google一下其他人怎么解决的。输入如下命令,然后就是漫长的等待:

    bin/mkdistro.sh  -DskipTests -Puber 

        编译好之后,在distro/target目录下面,有oozie-4.3.1-distro-tar.gz,这个就是编译好之后的oozie。把这个oozie复制到home目录下。先把编译的前的oozie文件夹给改个名字,因为解压编译好的oozie文件夹名字和原来的名字一样,会覆盖掉。为了防止之后失败,还是先留着- -|||。

    mv oozie-4.3.1 oozie-4.3.1_

        然后解压刚编译好的oozie:

    tar -xzvf oozie-4.3.1-distro.tar.gz

     

    修改~/.bash_profile

        命令行输入:

    vim ~/.bash_profile 

        在里面加入下面三行:

    export OOZIE_HOME=/home/ubuntu/oozie-4.3.1
    export OOZIE_CONFIG=$OOZIE_HOME/conf
    export CLASSPATH=$CLASSPATH:$OOZIE_HOME/bin

        然后source一下:

     source ~/.bash_profile 

     

    修改hadoop的core-site.xml

     

        在命令行输入:

     vim hadoop-2.6.5/etc/hadoop/core-site.xml

        然后在里面添加。这里不要偷懒,要把所有的slave node上的core-site.xml都修改了:

    <property>
         <name>hadoop.proxyuser.ubuntu.hosts</name>
         <value>*</value>
    </property>
    
    <property>
         <name>hadoop.proxyuser.ubuntu.groups</name>
         <value>*</value>
    </property>


        值得注意的是,下图红圈部分的设置,是根据所在用户组来填的。(因为我是个假cs学生,所以一开始也闹不明白,错了好久)。你看看你的终端,@前面是什么,在core-site.xml两个红圈里面就填什么。

     

     

    v

    建议check一下在hadoop的配置目录etc/hadoop下,中的mapred-site.xml内容如下所示:

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>

        

     

    然后回到hadoop的目录下:

    cd ~/hadoop-2.6.5

        启动Hdfs:

    sbin/start-dfs.sh  

        启动yarn:

    sbin/start-yarn.sh

     

    修改oozie的oozie-site.xml

     

        进入oozie配置的文件夹:

    cd ~/oozie-4.3.1/conf

        然后修改oozie-site.xml:

    <property>
        <name>oozie.service.JPAService.jdbc.driver</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    
    
    <property>
        <name>oozie.service.JPAService.jdbc.url</name>
        <value>jdbc:mysql://localhost:3306/oozie</value>  <!-- 千万别写成master:3306,得是localhost:3306 -->
    </property>
    
    
    <property>
        <name>oozie.service.JPAService.jdbc.username</name>
        <value>oozie</value>
    </property>
    
    
    <property>
        <name>oozie.service.JPAService.jdbc.password</name>
        <value>mysql</value>
    </property>
    
    
    <property>
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
        <value>*=/home/ubuntu/hadoop-2.6.5/etc/hadoop</value>
    </property>
    
    
    <property>
        <name>oozie.service.WorkflowAppService.system.libpath</name>
        <value>hdfs://master:9000/user/ubuntu/share/lib</value>
    </property>
    

        但是这里要注意下面两点:

        第一,这里写ubuntu是和之前hadoop core-site配置里面的一样。这个属性配置的是oozie在hdfs里面share lib的地址。

        第二,下面这两个属性,一个是数据库用户的用户名,一个是用户的密码,这个需要和后面在数据库里创建的用户名密码相匹配。不如下一步就把数据库那边先搞定吧。

     

    创建数据库和用户及其授权

        进入mysql:

     mysql -uroot -p

        然后照提示输入密码,就会进入如下界面:

        创建oozie数据库:

     CREATE DATABASE oozie;

        因为上一步我们在oozie-site.xml里面配置的用户名是oozie,密码是mysql,所以我们要在mysql里面建立这个用户:

     CREATE USER 'oozie'@'%' IDENTIFIED BY 'mysql';

        前面那个oozie,代表的是用户名,identified by后面跟着的‘mysql’是密码。 然后@后面‘%’代表的意思是:我们创建的这个用户可以在任意主机上访问mysql。下一步是给oozie用户操作数据库oozie的权限:

    GRANT ALL ON oozie.* TO 'oozie'@'%';

        ALL代表给所有的权限, oozie.*,前面的oozie代表的是数据库名字,*代表的是oozie数据库下所有的表,最后的‘oozie’@'*'是刚刚创建的用户。最后输入如下命令使得刚刚操作生效:

     FLUSH privileges;

        然后输入如下命令退出mysql

    exit

     

    把需要的jar包都打包

        首先在进入oozie-4.3.1目录:

    cd ~/oozie-4.3.1/

        创建libext文件夹:

    mkdir libext

        然后把hadoop里面的包复制到libext里面:

    cp ../hadoop-2.6.5/share/hadoop/*/lib/*.jar libext/
    cp ../hadoop-2.6.5/share/hadoop/*/*.jar libext/

        然后把之前百度网盘里面下载的mysql-connector的jar包和ext-2.2.zip也放到libext文件夹里面:

    cp ../mysql-connector-java-8.0.11.jar libext/
    cp ../ext-2.2.zip libext/

        然后把libext 里面一系列和hadoop冲突的包丢掉:

    cd libext
    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
    mv slf4j-log4j12-1.7.5.jar slf4j-log4j12-1.7.5.jar.bak

        回到oozie文件夹下:    

     cd ~/oozie-4.3.1/

        下一步就是打包oozie.war。因为我的ubuntu里面有unzip和zip,所以我得先安装unzip和zip。如果你也没有zip和unzip,那么可用如下命令安装zip和unzip:

    sudo apt-get install zip
    sudo apt-get install unzip

        如果已经有了unzip和zip就直接执行下面命令。

    bin/oozie-setup.sh prepare-war

           

    下一步修改oozie-env.sh

    vim conf/oozie-env.sh

        然后添加如下内容:

    # Set Java hoem and hadoop prefix  
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    export OOZIE_PREFIX=/home/ubuntu/oozie-4.3.1
    
    
    # Set hadoop configuration path  
    export OOZIE_CONF_DIR=/home/ubuntu/oozie-4.3.1/conf/
    export OOZIE_HOME=/home/ubuntu/oozie-4.3.1
    
    
    # add hadoop package 
    export CLASSPATH=$CLASSPATH:$OOZIE_HOME/libext/*.jar
    

        然后千万记得要soufce一下:

    source conf/oozie-env.sh

     

    上传share lib到hdfs

     

        解压oozie-4.3.1目录下的share lib:

    tar -xzvf oozie-sharelib-4.3.1.tar.gz 

        进入hadoop页面:

    cd ~/hadoop-2.6.5

        输入如下命令,把share lib放到oozie-site.xml配置的路径里去:    

    bin/hdfs dfs -mkdir /user
    bin/hdfs dfs -mkdir /user/ubuntu
    bin/hdfs dfs -put ../oozie-4.3.1/share /user/ubuntu/

     

     

    在oozie关联mysql数据库

        在启动oozie之前,记得先启动hadoop和jobhistory:

    cd ~/hadoop-2.6.5
    sbin/start-dfs.sh
    sbin/start-yarn.sh
    sbin/mr-jobhistory-daemon.sh start historyserver

        进入oozie页面:

    cd ~/oozie-4.3.1

        然后输入如下命令关联数据库:

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

     

    撒花:终于可以启动oozie了

        启动oozie之前,记得先启动hadoop和job history:

    cd ~/hadoop-2.6.5
    sbin/start-dfs.sh
    sbin/start-yarn.sh
    sbin/mr-jobhistory-daemon.sh start historyserver

        然后进入到oozie的目录下:

    cd ~/oozie-4.3.1

        下一步启动oozie:

    bin/oozied.sh start

        然后输入下列命令查看oozie状态:

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

     

     

     

    跑个例子,oozie安装包里自带的例子:map-reduce

        解压oozie目录下的example:

    tar -xzvf oozie-examples.tar.gz 

        修改map-reduce里面的job.properties:

    vim examples/apps/map-reduce/job.properties 

        修改namenode和jobtracker的配置。这两个是参考自己hadoop的配置的,namenode的配置是在hadoop的core-site.xml里面配置的,jobtracker的配置是在hadoop的yarn-site.xml里面配置的yarn.resourcemanager.address属性。

        然后再hadoop里面,把这个example上传到hdfs里面:

    cd ~/hadoop-2.6.5
    bin/hdfs dfs -put ../oozie-4.3.1/examples /user/ubuntu/

        然后就可以执行啦:

    bin/oozie job -oozie  http://localhost:11000/oozie -config examples/apps/map-reduce/job.properties -run

       job提高成功之后就会给一个job ID。之后就可以通过如下命令查看job的状态,最后那一串就是刚刚给的job ID:

     bin/oozie job -oozie http://localhost:11000/oozie -info   0000000-180614231856836-oozie-ubun-W

     

        然后就能看到SUCCEED的信息啦!!!!!

     

        接着进入hadoop目录下:

    cd ~/hadoop-2.6.5/

        输入下列命令,查看输出:

    bin/hdfs dfs -cat /user/ubuntu/examples/output-data/map-reduce/part-00000

     

    展开全文
  • Oozie是大数据生态圈中一个基于工作流的任务调度工具,也是大数据工程师的一个常用工具。 在本课程中,你将学习到Oozie的原理、 安装配置、使用Oozie实现调度Shell脚本、 逻辑调度多个...
  • 本文目录1、解压及改名2、修改配置3、启动相应的服务4、...[root@cjh1 bigdata]# mv oozie-4.1.0-cdh5.14.2/ oozie410 2、修改配置 # 配置环境变量 [root@cjh1 bigdata]# vi /etc/profile export OOZIE_HOME=/opt/b

    1、解压及改名

    [root@cjh1 install]# tar -zxf oozie-4.1.0-cdh5.14.2.tar.gz -C ../bigdata/
    
    [root@cjh1 bigdata]# mv oozie-4.1.0-cdh5.14.2/ oozie410
    

    2、修改配置

    # 配置环境变量
    [root@cjh1 bigdata]# vi /etc/profile
    export OOZIE_HOME=/opt/bigdata/oozie410
    export OOZIE_CONFIG=/opt/bigdata/oozie410/conf
    export OOZIE_URL=http://192.168.48.141:11000/oozie
    export PATH=$PATH:$OOZIE_HOME/bin
    
    [root@cjh1 bigdata]# source /etc/profile
    
    [root@cjh1 ~]# cd /opt/bigdata/oozie410/conf/
    
    [root@cjh1 conf]# vi oozie-site.xml 
    <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://192.168.48.141: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>cjh123</value>
        </property>
        <property>
    		<name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
            <value>*=/opt/bigdata/hadoop260/etc/hadoop/</value>
        </property>
    
    [root@cjh1 oozie410]# cp ./oozie.war ./oozie-server/webapps/
    

    3、启动相应的服务

    [root@cjh1 ~]# start-all.sh
    [root@cjh1 ~]# docker start mysql
    [root@cjh1 ~]# docker exec -it mysql bash
    root@9eb4e89d98e3:/# mysql -uroot -pcjh123
    

    在这里插入图片描述

    [root@cjh1 oozie410]# cp /opt/install/mysql-connector-java-5.1.32.jar ./libtools/
    
    # 生成数据库相关的表
    [root@cjh1 oozie410]# ./bin/ooziedb.sh create -sqlfile oozie.sql -run DB Connection
    

    在这里插入图片描述

    4、启动运行

    [root@cjh1 oozie410]# ./bin/oozied.sh start
    [root@cjh1 oozie410]# ./bin/oozied.sh run
    
    [root@cjh1 oozie410]# mkdir libext
    [root@cjh1 oozie410]# \cp -r -a /opt/bigdata/hadoop260/share/hadoop/*/lib/*.jar ./libext/
    [root@cjh1 libext]# \cp -r -a /opt/bigdata/hadoop260/share/hadoop/*/*.jar ./libext/
    
    [root@cjh1 libext]# cd /opt/bigdata/oozie410/oozie-server/webapps/oozie/WEB-INF/lib
    [root@cjh1 lib]# cp /opt/install/mysql-connector-java-5.1.32.jar ./
    
    [root@cjh1 libext]# \cp -r -a  * ../oozie-server/webapps/oozie/WEB-INF/lib/
    
    [root@cjh1 ~]# cd /opt/install
    [root@cjh1 install]# unzip ext-2.2.zip
    [root@cjh1 install]# cd /opt/bigdata/oozie410/oozie-server/webapps/oozie/
    [root@cjh1 oozie]# cp -r /opt/install/ext-2.2 ./ 
    
    [root@cjh1 oozie410]# ./bin/oozied.sh stop
    [root@cjh1 oozie410]# ./bin/oozied.sh start
    [root@cjh1 oozie410]# ./bin/oozied.sh run
    

    5、网页查看

    在这里插入图片描述
    ps:自此,Oozie配置完成!

    ps:制作不易,请留下你的小心心,望多多支持,后续更新中。。。

    展开全文
  • Oozie简介和运行实例

    2019-08-26 09:56:45
    一、oozie简介 Oozie是一个管理 Apache Hadoop 作业的工作流调度系统。 官网连接:http://oozie.apache.org/ 1、安装: 一是源生的,需要自己编译;(本文暂时不介绍具体的安装步骤,可以参考...

    一、oozie简介

    Oozie是一个管理 Apache Hadoop 作业的工作流调度系统。

    官网连接:http://oozie.apache.org/

    1、安装:

    一是源生的,需要自己编译;(本文暂时不介绍具体的安装步骤,可以参考https://blog.csdn.net/lucylove3943/article/details/80673962

    二是CDH的包来安装,和源生类似;

    三是Ambari上安装

    2、Oozie的Web页面。

     

    3、支持类型的Hadoop作业

    Oozie与Hadoop生态圈的其他部分集成在一起,支持多种类型的Hadoop作业(如Java map-reduce、流式map-reduce、Pig、Hive、Sqoop和Distcp)以及特定于系统的工作(如Java程序和shell脚本)。

     

    4、主要概念:

    4.1、Workflow:

    工作流,由我们需要处理的每个工作组成,进行需求的流式处理。(一个具体的任务,例如执行一个mr)

    4.2、Coordinator:

    协调器,可以理解为工作流的协调器,可以将多个工作流协调成一个工作流来进行处理(例如可以控制workflow每天24点执行)。

    4.3、Bundle:

    捆,束。将一堆的coordinator进行汇总处理。

     

    简单来说,workflow是对要进行的顺序化工作的抽象,coordinator是对要进行的顺序化的workflow的抽象,bundle是对一堆coordiantor的抽象。层级关系层层包裹。

    Oozie的 workflow jobs 是由 actions 组成的 有向无环图(DAG)

     

    5、Job组成:

    一个oozie 的 job 一般由以下文件组成:
    1、job.properties :记录了job的属性(hdfs、yarn、workflow、定时任务等基本信息) 
    2、workflow.xml :使用hPDL 定义任务的流程和分支(定义任务的整体流程)
    3、lib目录:用来执行具体的任务(例如需要执行mr任务的jar包)

    下面是具体的说明:

    1、Job.properties:

    2、workflow.xml:

    这个文件是定义任务的整体流程的文件,官网wordcount例子如下:

    3、Lib目录

    在workflow工作流定义的同级目录下,需要有一个lib目录,在lib目录中存在java节点MapReduce使用的jar包。

    需要注意的是,oozie并不是使用指定jar包的名称来启动任务的,而是通过制定主类来启动任务的。在lib包中绝对不能存在某个jar包的不同版本,不能够出现多个相同主类。

     

     

    注意:*********************************************************

    下面的6、7、8可简略查看,内容比较详细,可以先看 二、“使用”后再翻过来回看。

    6、工作流生命周期

    在Oozie中,工作流的状态可能存在如下几种:

    状态 

    含义说明 

    PREP

    一个工作流Job第一次创建将处于PREP状态,表示工作流Job已经定义,但是没有运行。

    RUNNING

    当一个已经被创建的工作流Job开始执行的时候,就处于RUNNING状态。它不会达到结束状态,只能因为出错而结束,或者被挂起。

    SUSPENDED

    一个RUNNING状态的工作流Job会变成SUSPENDED状态,而且它会一直处于该状态,除非这个工作流Job被重新开始执行或者被杀死。

    SUCCEEDED

    当一个RUNNING状态的工作流Job到达了end节点,它就变成了SUCCEEDED最终完成状态。

    KILLED

    当一个工作流Job处于被创建后的状态,或者处于RUNNING、SUSPENDED状态时,被杀死,则工作流Job的状态变为KILLED状态。

    FAILED

    当一个工作流Job不可预期的错误失败而终止,就会变成FAILED状态。

    上述各种状态存在相应的转移(工作流程因为某些事件,可能从一个状态跳转到另一个状态),其中合法的状态转移有如下几种,如下表所示:

    转移前状态 

    转移后状态集合 

    未启动

    PREP

    PREP

    RUNNING、KILLED

    RUNNING

    SUSPENDED、SUCCEEDED、KILLED、FAILED

    SUSPENDED

    RUNNING、KILLED

    明确上述给出的状态转移空间以后,可以根据实际需要更加灵活地来控制工作流Job的运行。

     

    7、控制流节点(相当于抽象顺序,不包含具体内容

    工作流程定义中,控制工作流的开始和结束,以及工作流Job的执行路径的节点,它定义了流程的开始(start节点)和结束(end节点或kill节点),同时提供了一种控制流程执行路径的机制(decision决策节点、fork分支节点、join会签节点)。通过上面提到的各种节点,我们大概应该能够知道它们在工作流中起着怎样的作用。下面,我们看一下不同节点的语法格式:

    • start节点

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">

    ...

    <start to="[NODE-NAME]" />

    ...

    </workflow-app>

    上面start元素的to属性,指向第一个将要执行的工作流节点。

    • end节点

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">

    ...

    <end name="[NODE-NAME]" />

    ...

    </workflow-app>

    达到该节点,工作流Job会变成SUCCEEDED状态,表示成功完成。需要注意的是,一个工作流定义必须只能有一个end节点。

    • kill节点

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">

    ...

    <kill name="[NODE-NAME]">

    <message>[MESSAGE-TO-LOG]</message>

    </kill>

    ...

    </workflow-app>

    kill元素的name属性,是要杀死的工作流节点的名称,message元素指定了工作流节点被杀死的备注信息。达到该节点,工作流Job会变成状态KILLED。

    • decision节点

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">

    ...

    <decision name="[NODE-NAME]">

    <switch>

    <case to="[NODE_NAME]">[PREDICATE]</case>

    ...

    <case to="[NODE_NAME]">[PREDICATE]</case>

    <default to="[NODE_NAME]" />

    </switch>

    </decision>

    ...

    </workflow-app>

    decision节点通过预定义一组条件,当工作流Job执行到该节点时,会根据其中的条件进行判断选择,满足条件的路径将被执行。decision节点通过switch…case语法来进行路径选择,只要有满足条件的判断,就会执行对应的路径,如果没有可以配置default元素指向的节点。

    • fork节点和join节点

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">

    ...

    <fork name="[FORK-NODE-NAME]">

    <path start="[NODE-NAME]" />

    ...

    <path start="[NODE-NAME]" />

    </fork>

    ...

    <join name="[JOIN-NODE-NAME]" to="[NODE-NAME]" />

    ...

    </workflow-app>

    for元素下面会有多个path元素,指定了可以并发执行的多个执行路径。fork中多个并发执行路径会在join节点的位置会合,只有所有的路径都到达后,才会继续执行join节点。

    8、动作节点(Action Nodes)

    工作流程定义中,能够触发一个计算任务(Computation Task)或者处理任务(Processing Task)执行的节点。

    一个动作执行成功会转到ok节点;如果失败转向error节点。

     

    • Map-Reduce动作

    map-reduce动作会在工作流Job中启动一个MapReduce Job任务运行,我们可以详细配置这个MapReduce Job。另外,可以通过map-reduce元素的子元素来配置一些其他的任务,如streaming、pipes、file、archive等等。
    下面给出包含这些内容的语法格式说明:

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">

    ...

    <action name="[NODE-NAME]">

    <map-reduce>

    <job-tracker>[JOB-TRACKER]</job-tracker>

    <name-node>[NAME-NODE]</name-node>

    <prepare>

    <delete path="[PATH]" />

    ...

    <mkdir path="[PATH]" />

    ...

    </prepare>

    <streaming>

    <mapper>[MAPPER-PROCESS]</mapper>

    <reducer>[REDUCER-PROCESS]</reducer>

    <record-reader>[RECORD-READER-CLASS]</record-reader>

    <record-reader-mapping>[NAME=VALUE]</record-reader-mapping>

    ...

    <env>[NAME=VALUE]</env>

    ...

    </streaming>

    <!-- Either streaming or pipes can be specified for an action, not both -->

    <pipes>

    <map>[MAPPER]</map>

    <reduce>

    [REDUCER]

    </reducer>

    <inputformat>[INPUTFORMAT]</inputformat>

    <partitioner>[PARTITIONER]</partitioner>

    <writer>[OUTPUTFORMAT]</writer>

    <program>[EXECUTABLE]</program>

    </pipes>

    <job-xml>[JOB-XML-FILE]</job-xml>

    <configuration>

    <property>

    <name>[PROPERTY-NAME]</name>

    <value>[PROPERTY-VALUE]</value>

    </property>

    ...

    </configuration>

    <file>[FILE-PATH]</file>

    ...

    <archive>[FILE-PATH]</archive>

    ...

    </map-reduce>

    <ok to="[NODE-NAME]" />

    <error to="[NODE-NAME]" />

    </action>

    ...</workflow-app>

    • Hive动作

    Hive主要是基于类似SQL的HQL语言的,它能够方便地操作HDFS中数据,实现对海量数据的分析工作。HIve动作的语法格式如下所示:

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.2">

    ...

    <action name="[NODE-NAME]">

    <hive xmlns="uri:oozie:hive-action:0.2">

    <job-tracker>[JOB-TRACKER]</job-tracker>

    <name-node>[NAME-NODE]</name-node>

    <prepare>

    <delete path="[PATH]" />

    ...

    <mkdir path="[PATH]" />

    ...

    </prepare>

    <configuration>

    <property>

    <name>[PROPERTY-NAME]</name>

    <value>[PROPERTY-VALUE]</value>

    </property>

    ...

    </configuration>

    <script>[HIVE-SCRIPT]</script>

    <param>[PARAM-VALUE]</param>

    ...

    </hive>

    <ok to="[NODE-NAME]" />

    <error to="[NODE-NAME]" />

    </action>

    ...</workflow-app>

    • Sqoop动作

    Sqoop是一个能够在Hadoop和结构化存储系统之间进行数据的导入导出的工具,Sqoop动作的语法格式如下:

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.2">

    ...

    <action name="[NODE-NAME]">

    <sqoop xmlns="uri:oozie:sqoop-action:0.2">

    <job-tracker>[JOB-TRACKER]</job-tracker>

    <name-node>[NAME-NODE]</name-node>

    <prepare>

    <delete path="[PATH]" />

    ...

    <mkdir path="[PATH]" />

    ...

    </prepare>

    <configuration>

    <property>

    <name>[PROPERTY-NAME]</name>

    <value>[PROPERTY-VALUE]</value>

    </property>

    ...

    </configuration>

    <command>[SQOOP-COMMAND]</command>

    <file>[FILE-PATH]</file>

    ...

    </sqoop>

    <ok to="[NODE-NAME]" />

    <error to="[NODE-NAME]" />

    </action>

    ...</workflow-app>

    • Pig动作

    pig动作可以启动运行pig脚本实现的Job,在工作流定义中配置的语法格式说明如下:

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.2">

    ...

    <action name="[NODE-NAME]">

    <pig>

    <job-tracker>[JOB-TRACKER]</job-tracker>

    <name-node>[NAME-NODE]</name-node>

    <prepare>

    <delete path="[PATH]" />

    ...

    <mkdir path="[PATH]" />

    ...

    </prepare>

    <job-xml>[JOB-XML-FILE]</job-xml>

    <configuration>

    <property>

    <name>[PROPERTY-NAME]</name>

    <value>[PROPERTY-VALUE]</value>

    </property>

    ...

    </configuration>

    <script>[PIG-SCRIPT]</script>

    <param>[PARAM-VALUE]</param>

    ...

    <param>[PARAM-VALUE]</param>

    <argument>[ARGUMENT-VALUE]</argument>

    ...

    <argument>[ARGUMENT-VALUE]</argument>

    <file>[FILE-PATH]</file>

    ...

    <archive>[FILE-PATH]</archive>

    ...

    </pig>

    <ok to="[NODE-NAME]" />

    <error to="[NODE-NAME]" />

    </action>

    ...</workflow-app>

    • Fs动作

    Fs动作主要是基于HDFS的一些基本操作,如删除路径、创建路径、移动文件、设置文件全乡等等。
    语法格式:

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">

    ...

    <action name="[NODE-NAME]">

    <fs>

    <delete path='[PATH]' />

    ...

    <mkdir path='[PATH]' />

    ...

    <move source='[SOURCE-PATH]' target='[TARGET-PATH]' />

    ...

    <chmod path='[PATH]' permissions='[PERMISSIONS]' dir-files='false' />

    ...

    <touchz path='[PATH]' />

    </fs>

    <ok to="[NODE-NAME]" />

    <error to="[NODE-NAME]" />

    </action>

    ...</workflow-app>

    • SSH动作

    该动作主要是通过ssh登录到一台主机,能够执行一组shell命令,它在Oozie schema 0.2中已经被删除。
    语法格式:

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">

    ...

    <action name="[NODE-NAME]">

    <ssh>

    <host>[USER]@[HOST]</host>

    <command>[SHELL]</command>

    <args>[ARGUMENTS]</args>

    ...

    <capture-output />

    </ssh>

    <ok to="[NODE-NAME]" />

    <error to="[NODE-NAME]" />

    </action>

    ...</workflow-app>

    • Java动作

    Java动作,是执行一个具有main入口方法的应用程序,在Oozie工作流定义中,会作为一个MapReduce Job执行,这个Job只有一个Map任务。我们需要指定NameNode、JobTracker的信息,还有配置一个Java应用程序的JVM选项参数(java-opts),以及传给主函数(arg)。
    语法格式:

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">

    ...

    <action name="[NODE-NAME]">

    <java>

    <job-tracker>[JOB-TRACKER]</job-tracker>

    <name-node>[NAME-NODE]</name-node>

    <prepare>

    <delete path="[PATH]" />

    ...

    <mkdir path="[PATH]" />

    ...

    </prepare>

    <job-xml>[JOB-XML]</job-xml>

    <configuration>

    <property>

    <name>[PROPERTY-NAME]</name>

    <value>[PROPERTY-VALUE]</value>

    </property>

    ...

    </configuration>

    <main-class>[MAIN-CLASS]</main-class>

    <java-opts>[JAVA-STARTUP-OPTS]</java-opts>

    <arg>ARGUMENT</arg>

    ...

    <file>[FILE-PATH]</file>

    ...

    <archive>[FILE-PATH]</archive>

    ...

    <capture-output />

    </java>

    <ok to="[NODE-NAME]" />

    <error to="[NODE-NAME]" />

    </action>

    ...</workflow-app>

    • Sub-workflow动作

    Sub-workflow动作是一个子流程的动作,主流程执行过程中,遇到子流程节点执行时,会一直等待子流程节点执行完成后,才能继续跳转到下一个要执行的节点。
    语法格式:

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1">

    ...

    <action name="[NODE-NAME]">

    <sub-workflow>

    <app-path>[WF-APPLICATION-PATH]</app-path>

    <propagate-configuration />

    <configuration>

    <property>

    <name>[PROPERTY-NAME]</name>

    <value>[PROPERTY-VALUE]</value>

    </property>

    ...

    </configuration>

    </sub-workflow>

    <ok to="[NODE-NAME]" />

    <error to="[NODE-NAME]" />

    </action>

    ...</workflow-app>

    • Shell动作

    Shell动作可以执行Shell命令,并通过配置命令所需要的参数。它的语法格式:

    <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.4">

    ...

    <action name="[NODE-NAME]">

    <shell xmlns="uri:oozie:shell-action:0.2">

    <job-tracker>[JOB-TRACKER]</job-tracker>

    <name-node>[NAME-NODE]</name-node>

    <prepare>

    <delete path="[PATH]" />

    ...

    <mkdir path="[PATH]" />

    ...

    </prepare>

    <configuration>

    <property>

    <name>[PROPERTY-NAME]</name>

    <value>[PROPERTY-VALUE]</value>

    </property>

    ...

    </configuration>

    <exec>[SHELL-COMMAND]</exec>

    <argument>[ARGUMENT-VALUE]</argument>

    <capture-output />

    </shell>

    <ok to="[NODE-NAME]" />

    <error to="[NODE-NAME]" />

    </action>

    ...</workflow-app>

    二、使用:

    1、Oozie目录:(4.3.1版本)

     

    主要:

    bin:执行命令的

    conf: 配置目录

    lib:  oozie的相关包

    share: 上传到hadoop中需要配合运行oozie的包(上传到hdfs后oozie这里就不需要了)

     

    examples : 这个examples是接下来要介绍的 oozie提交mr例子所需要的所有内容

     

    1. Oozie的使用

    一:源生(下面以运行一个MR任务为例)

    使用Oozie,就先进行源生安装,比较麻烦,需要配置一些东西,其中主要有基本的hdfs、yarn等地址,而且还有hdfs中conf的映射地址,需要上传到hdfs上的oozie的相关jar包和地址映射。

    其中主要就是编写job中的配置,来用oozie规定的规范来编写自己的逻辑。

     

    二:配合Hue使用

    使用方便,直接在上面进行操作即可

    1. 源生运行MR任务为例:

    3.1、配置job任务

    刚才在oozie目录下,有个exmaples文件夹,已经介绍过了,这就是要运行一个mr任务所需要所有东西,他都由哪些文件组成呢?让我们来看一下:

     

    1. apps:包含配置oozie任务所需要对应的文件
    2. Input-data: 里面是wordcount的一个txt文件
    3. src: mr的java代码

    下面主要介绍apps :

    图中标注的,即为“一、5 Job组成”中介绍的,三要素:Job.properties、Workflow.xml、Lib

    其中:

    Job.properties 内容如下:(记录了job的属性(hdfs、yarn地址等基本信息))

     

    workflow.xml 内容如下:

    定义了mr的任务的流程

    这里面主要是运行mr action的内容。

     

    lib目录:里面是该例子的jar包

    3.2、上传到HDFS对应目录下(该目录映射在conf里有配置)

    因为oozie可能没有在hdfs运行的主节点上,所以需要把所需的job配置和jar包等上传到hdfs中。

    上传jar包、代码、相应的job配置到HDFS对应的目录下,实例如下。

    3.3、启动Oozie

    在oozie的安装目录下执行

    bin/oozied.sh start

    3.4、启动前提

    运行oozie任务前,需要先启动hadoop,包括hdfs和yarn等。

    注意:还需要启动jobhistory

    命令:sbin/mr-jobhistory-daemon.sh start historyserver

    3.5、启动mr的Job实例

    选好oozie的地址,指定jon.properties启动,命令如下:

    bin/oozie job -oozie  http://localhost:11000/oozie -config examples/apps/map-reduce/job.properties -run

     

    执行后,会返回一个job的id。

     

    然后我们去看一下,oozie的web 界面:

    我们点开这个Job,可以查看详情、任务配置、DAG图等信息

     

     

    然后我们看hdfs上,有个目录,里面记录了job id的信息,有相应目录,说明提交已经成功。

    然后查看输出任务,应该有相应的目录。

    至此,demo流程基本上运行完毕~相信大家会有一个清晰的认识了,最后运行还是推荐在HUE上,比较方便。

     

     

    展开全文
  • Oozie学习笔记

    2019-03-30 17:50:09
    业务流程管理JBPM(Java Business Process ...Oozie是类似JBPM的用于 Hadoop 平台的开源的工作流调度引擎,用来管理Hadoop作业,属于web应用程序,由Oozie client和Oozie Server两个组件构成,Oozie Server运行于...
  • 什么是Oozie——大数据任务调度框架

    万次阅读 2018-08-21 22:33:15
    Oozie简介 Oozie是大数据四大协作框架之一——任务调度框架,另外三个分别为数据转换工具Sqoop,文件收集库框架Flume,大数据WEB工具Hue。 它能够提供对Hadoop MapReduce和Pig Jobs的任务调度与协调。 Oozie...
  • Oozie的简单使用

    千次阅读 2019-05-26 16:27:16
    1、Oozie的介绍     Oozie是一个工作流引擎服务器,用于运行Hadoop Map/Reduce和Hive等任务工作流.同时Oozie还是一个Java Web程序,运行在Java Servlet容器中,如Tomcat中。Oozie以action为基本...
  • 大数据调度工具oozie详细介绍

    万次阅读 2018-08-17 22:55:53
    之前项目中的sqoop等离线数据迁移job都是利用shell脚本通过crontab进行定时执行,这样实现的话比较简单,但是随着多个job复杂度的提升,无论是协调工作还是任务监控都变得麻烦,我们选择使用oozie来对工作流进行调度...
  • Oozie的详细使用

    2020-07-15 09:05:48
    案例一:Oozie调度shell脚本 目标:使用Oozie调度Shell脚本 分步实现: 创建工作目录 [liujh@hadoop102 oozie-4.0.0-cdh5.3.6]$ mkdir -p oozie-apps/shell 在oozie-apps/shell目录下创建两个文件——job....
  • Oozie多任务串联和定时任务执行?看这篇就懂了!

    千次阅读 多人点赞 2020-06-05 15:17:34
    写在前面: 博主是一名软件工程系大数据应用开发专业大二的学生,昵称来源于《爱丽丝梦游仙境》中的Alice和自己的昵称。作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和...
  • Oozie中workflow的构成及mapreduce、hive、sqoop、shell action的配置运行。
  • oozie

    万次阅读 2018-01-16 09:55:34
    该框架使用 Oozie 协调器促进了相互依赖的重复工作之间的协调,您可以使用预定的时间或数据可用性来触发 Apache Oozie。您可以使用 Oozie bundle 系统提交或维护一组协调应用程序。作为本练习的一部分,Oozie 运行了...
  • Oozie简介

    2018-06-01 15:57:08
    [1]在Hadoop生态圈中,有一种相对比较新的组件叫做Oozie[2],它让我们可以把多个Map/Reduce作业组合到一个逻辑工作单元中,从而完成更大型的任务。本文中,我们会向你介绍Oozie以及使用它的一些方式。什么是Oozie?...
  • oozie教程

    千次阅读 2017-01-18 10:28:06
    Oozie的3个概念 Oozie有3个主要概念 workflow 工作流coordinator 多个workflow可以组成一个coordinator,可以把前几个workflow的输出作为后一个workflow的输入,也可以定义workflow的触发条件,
  • Oozie的安装与使用

    2020-06-02 21:15:34
    Oozie的介绍 Oozie是运行在hadoop平台上的一种工作流调度引擎,它可以用来调度与管理hadoop任务,如,MapReduce、Pig等。 oozie的组件介绍 workFlow:工作流,定义工作流任务的执行,主要由一个个的action组成,每...
  • oozie 用法说明

    2019-01-14 16:35:29
    本博客一共包含ooize workflow流程写法,job.properties 文件配置,ooize 任务的启动与杀死。 oozie 流程定义: 1.workflow 的开始和workflow 的命名 &lt;workflow-app xmlns="uri:oozie:workflow:0.2&...
  • 将系统默认时区西四区改为东八区,以及Oozie中的时区修改,并介绍了Oozie v2中Coodinator的概念及运行实例。
  • Oozie

    千次阅读 2013-02-25 18:40:23
    Oozie 不同于在客户端运行并提交作业的JobControl,Ooize(http://yahoo.github.com/ oozie/)作为服务器运行,客户端提交一个工作流到服务器。在Ooize中,工作流是一个由动作(action)节点和控制流节点组成的DAG(有向...
  • OOZIE

    千次阅读 2015-02-05 15:12:53
    oozie
  • oozie详解

    2014-11-20 16:10:48
    1、什么是Oozie Oozie是一种java web应用程序,它运行在java servlet容器中,并使用数据库来存储一下内容:  ①工作流定义  ②当前运行的工作流实例,包括实例的状态和变量 Oozie工作流失放置在控制依赖DAG(有...
  • Oozie和Azkaban的技术选型和对比

    万次阅读 2016-08-09 18:29:25
    源码角度分析Oozie和Azkaban的优劣
  • oozie 常用命令

    千次阅读 2018-03-03 11:43:34
    1.验证wokflow.xmloozie validate /appcom/apps/hduser0401/mbl_...提交作业,作业进入PREP状态 oozie job -oozie http://localhost:11000/oozie -config job.properties -submit job: 14-20090525161321-o...
  • oozie(4.1.0)架构及二次开发流程

    千次阅读 2015-08-21 12:04:35
    oozie架构图 从oozie的架构图中,可以看到所有的任务都是通过oozie生成相应的任务客户端,并通过任务客户端来提交相应的任务; 对oozie的二次开发都集中在了oozie server那里,其实官网是有自定义例子:...
  • oozie(3):oozie配置Shell脚本调度

    千次阅读 2018-12-08 09:08:26
    【参考官网:...使用oozie调度运行本地shell脚本,实现脚本shell脚本自动化执行。 二、步骤 1.拷贝官方自带实例模板 cp -r examples/apps/shell/ oozie-a...
  • Oozie扩展,自定义节点

    千次阅读 2018-05-31 10:25:36
    在前面的两篇文章中[1,2],我们描述了Oozie工作流服务器,并且展示了几个工作流的示例。我们还描述了针对Oozie的工作流的部署和配置,以及用来启动、停止和监控Oozie工作流的工具。在本文中,我们会向你展示Oozie的...
  • 前言Oozie是什么呢?按官方说法:Oozie是一个基于工作流引擎的服务器,其中每个工作流的任务可以是Hadoop的Map/Reduce作业或者Pig作业等。Oozie是运行于Java servlet容器上的一个java web应用。Oozie的目的是按照DAG...
  • Oozie笔记】3. Oozie调度shell脚本

    千次阅读 2019-09-01 17:33:33
    Oozie已经安装完成了,我们使用Oozie调度Shell脚本。 调度Shell脚本 解压一下官方案例模板 root@master:/opt/module/oozie-4.0.0-cdh5.3.6# tar -zxvf oozie-examples.tar.gz 在examples目录下的apps中都是...
  • Oozie调用hive案例——Oozie4.3.1 oozie调用hive准备三个文件 job.properties、script.q、workflow.xml 1.job.properties # 当你配置了dfs高可用,fs.defaultFS参数对应的名字, # 否者写hdfs://deptest1:8020或者...
  • oozie——hue整合oozie

    千次阅读 2018-10-05 22:04:55
    停止oozie与hue的进程 通过命令停止oozie与hue的进程,准备修改oozie与hue的配置文件 修改oozie的配置文件 (老版本的bug,新版本已经不需要了) 修改oozie的配置文件oozie-site.xml &lt;property&gt; &...

空空如也

1 2 3 4 5 ... 20
收藏数 14,004
精华内容 5,601
关键字:

oozie