• 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的配置信息里

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

  • 相关阅读:
    当Django模型迁移时,报No migrations to apply 问题时
    django--各个文件的含义
    django--创建项目
    1013. Battle Over Cities (25)
    1011. World Cup Betting (20)
    1009. Product of Polynomials (25)
    1007. Maximum Subsequence Sum (25)
    1006. Sign In and Sign Out (25)
    1008. Elevator (20)
    1004. Counting Leaves (30)
  • 原文地址:https://www.cnblogs.com/zhli/p/5554095.html
Copyright © 2020-2023  润新知