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的配置信息里
先总结这些吧,懂得更多的同学可以留言交流哦~