zoukankan      html  css  js  c++  java
  • oozie bundle学习笔记

    oozie已经用了一段时间,但是只用到coordinator级别,还没用过bundle,今天研究了一下,也可以参考oozie手册学习一下,地址:http://cs-achelous-client-15793.hadoop.jd.com:11000/oozie/docs/BundleFunctionalSpec.html

    1、首先bundle是控制一个或者多个coordinator的工具,即一次可以控制一个或者多个工作流调度的执行,下面简单做了一个例子测试,先上代码:

    bundle.xml

    <bundle-app name='scale_bundle_b'  xmlns='uri:oozie:bundle:0.1'> 
       <controls>
           <kick-off-time>${kickOffTime}</kick-off-time>
      </controls>
       <coordinator name='coord1'>
           <app-path>${nameNode}/user/${userName}/oozie/workflow/rebate/batchCalc/scaleCalcRebate/po/coordinator.xml</app-path>
              <configuration>
                <property>
                  <name>start</name>
                  <value>${start}</value>
                </property>
                <property>
                  <name>end</name>
                  <value>${end}</value>
                </property>
             </configuration>
       </coordinator>
    </bundle-app>  

    2、job.properties.xml:

    nameNode=
    jobTracker=
    queueName=
    examplesRoot=oozie/workflow/rebate/apps/bundle
    userName=${user.name}
    outputDir=bundle
    
    oozie.libpath=/user/${user.name}/share/lib
    
    oozie.bundle.application.path=${nameNode}/user/${user.name}/${examplesRoot}
    kickOffTime=2016-01-01T01:00Z
    start=2016-01-01T01:00Z
    end=2017-01-01T03:00Z

    3、可以看到bundle的app-path属性配置了coordinator的位置,其中coordinator的内容如下:

    <coordinator-app name="aggregator-coord" frequency="${coord:hours(1)}" start="${start}" end="${end}" timezone="UTC" xmlns="uri:oozie:coordinator:0.2">
        <controls>
            <concurrency>1</concurrency>
        </controls>
    
        <action>
            <workflow>
                <app-path>${nameNode}/user/${coord:user()}/oozie/workflow/rebate/batchCalc/scaleCalcRebate/po</app-path>
                <configuration>
                    <property>
                        <name>jobTracker</name>
                        <value>${jobTracker}</value>
                    </property>
                    <property>
                        <name>nameNode</name>
                        <value>${nameNode}</value>
                    </property>
                    <property>
                        <name>queueName</name>
                        <value>${queueName}</value>
                    </property>
                </configuration>
            </workflow>
        </action>
    </coordinator-app>

    其中frequecy指定了该工作流调度的频率,即1个小时

    4、在使用过程中,发现一个问题就是比如跑工作流过程中用到了配置的参数变量,比如${importPath},该变量的值是在job.properties里配置的,如果用bundle起的话工作流是读取不到这个变量,会报获取不到该变量的错误信息,如果把该变量的

    定义放到config-default.xml里就可以读取到,可能bundle默认会加载这个文件吧,或者直接在coordinator.xml文件里配置也行,反正放在job.prioperties是不行的,可能job.properties只有在单个启动工作流的时候才会把job.properties的内容加载到

    oozie的配置信息里

    先总结这些吧,懂得更多的同学可以留言交流哦~

  • 相关阅读:
    [杂题]FZU2190 非提的救赎
    [模拟]ZOJ3480 Duck Typing
    [模拟]ZOJ3485 Identification Number
    [数论]ZOJ3593 One Person Game
    [博弈]ZOJ3591 Nim
    [杂题]URAL1822. Hugo II's War
    二分图相关
    KMP算法详解
    中国国家集训队论文集目录(1999-2009)
    最短路Dijkstra算法的一些扩展问题
  • 原文地址:https://www.cnblogs.com/zhli/p/5554095.html
Copyright © 2011-2022 走看看