码迷,mamicode.com
首页 > 其他好文 > 详细

Oozie-coordinator调度

时间:2017-05-04 00:12:08      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:方式   att   code   动作   flow   roo   ssi   share   定时   

当有一个复杂的工作流job,希望每天定时执行,使用crontab方式调用需要编写大量的脚本,还要通过大量的判断来控制每个工作流job的执行顺序问题。Oozie中的Coordinator可以让每个工作流workflow当做一个动作来运行,这样就可以将多个job组织起来,并制定触发时间和频率。它的调度方式有两种:一种是基于时间调度;还有一种是基于数据可用性调度(判断数据是否存在和是否符合标准)。

    1. 如果要设置基于时间的调度,需要先配置时区,因为oozie默认使用的是UTC时区,服务器默认使用的是CST,我们把他们修改为GMT +0800(当然也可以是其他时区)
      查看系统当前时区:
      技术分享
      23.png

      如果输出的时区不是+0800,需要进行修改
      $ rm -rf /etc/localtime
      $ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
      修改oozie时区,在oozie-sitexml添加参数
       <property>
           <name>oozie.processing.timezone</name>
           <value>GMT+0800</value>
       </property>
      修改oozie/-server/webapps/oozie/oozie-console.js中的时区设置,不然会影响web界面的时间,修改完成后重启生效
      function getTimeZone() {
       Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
       return Ext.state.Manager.get("TimezoneId","GMT+0800");
      }
    2. 拷贝模板中的coordinator案例
      $ cp -r examples/apps/cron-schedule/ my-apps/
    3. 修改job.properties
      nameNode=hdfs://bigdata-00:8020
      jobTracker=bigdata-00:8032
      queueName=default
      examplesRoot=user/wulei/my-apps/cron-schedule
      # 定义coordinate路径
      oozie.coord.application.path=${nameNode}/${examplesRoot}
      start=2016-11-13T12:30+0800
      end=2016-11-13T13:30+0800
      # 定义workflow路劲
      workflowAppUri=${nameNode}/${examplesRoot}
    4. 修改coorndinate.xml,让这个任务从开始时间到结束时间内每分钟执行一次
      <coordinator-app name="cron-coord" frequency="${coord:minutes(1)}" start="${start}" end="${end}" timezone="GMT+0800"
                    xmlns="uri:oozie:coordinator:0.2">
           <action>
           <workflow>
               <app-path>${workflowAppUri}</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>
    5. oozie的默认配置中,至少为每5分钟执行一次,所以需要修改默认配置
      技术分享
      24.png
    6. 上传至hdfs后执行
      技术分享
      25.png
    7. 查看执行结果
      技术分享
      27.png

      技术分享
       

Oozie-coordinator调度

标签:方式   att   code   动作   flow   roo   ssi   share   定时   

原文地址:http://www.cnblogs.com/ilinuxer/p/6804488.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!