zoukankan      html  css  js  c++  java
  • Oozie-coordinator调度

    当有一个复杂的工作流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


         
  • 相关阅读:
    DRF JWT认证基础
    Shell简单脚本
    DockerFile案例
    Shell基础知识
    DockerFile基础知识
    tensorflow
    使用cv2将图片分割成相等的部分
    序列化心得
    python正则化表达式
    python--匿名函数(lambda)
  • 原文地址:https://www.cnblogs.com/ilinuxer/p/6804488.html
Copyright © 2011-2022 走看看