oozie bundle学习笔记

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

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

bundle.xml

 
   
       ${kickOffTime}
  
   
       ${nameNode}/user/${userName}/oozie/workflow/rebate/batchCalc/scaleCalcRebate/po/coordinator.xml
          
            
              start
              ${start}
            
            
              end
              ${end}
            
         
   
  

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的内容如下:


    
        1
    

    
        
            ${nameNode}/user/${coord:user()}/oozie/workflow/rebate/batchCalc/scaleCalcRebate/po
            
                
                    jobTracker
                    ${jobTracker}
                
                
                    nameNode
                    ${nameNode}
                
                
                    queueName
                    ${queueName}
                
            
        
    

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

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

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

oozie的配置信息里

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

转载于:https://www.cnblogs.com/zhli/p/5554095.html

你可能感兴趣的:(oozie bundle学习笔记)