【Hadoop离线基础总结】oozie定时任务设置


简介

  • 概述
    在oozie当中,主要是通过Coordinator 来实现任务的定时调度,与workflow类似。Coordinator 这个模块也是主要通过xml来进行配置即可
    Coordinator 的调度主要有两种实现方式:
    第一种: 基于时间的定时任务调度,oozie基于时间的调度主要需要指定三个参数,第一个起始时间,第二个结束时间,第三个调度频率。
    第二种: 基于数据的任务调度,只有在有了数据才会去出发执行。

oozie定时任务设置

  • 1.拷贝定时任务的调度模板
    cd /export/servers/oozie-4.1.0-cdh5.14.0
    cp -r examples/apps/cron oozie_works/cron-job
    
  • 拷贝hello.sh脚本
    cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works
    cp shell/hello.sh  cron-job/
    
  • 3.修改配置文件

    修改job.properties

    cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/cron-job
    vim job.properties
    
    nameNode=hdfs://node01:8020
    jobTracker=node01:8032
    queueName=default
    examplesRoot=oozie_works
    
    oozie.coord.application.path=${nameNode}/user/${user.name}/${examplesRoot}/cron-job/coordinator.xml
    start=2018-08-22T19:20+0800
    end=2019-08-22T19:20+0800
    EXEC=hello.sh
    workflowAppUri=${nameNode}/user/${user.name}/${examplesRoot}/cron-job/workflow.xml
    

    修改coordinator.xml
    vim coordinator.xml

    <!--
    	oozie的frequency 可以支持很多表达式,其中可以通过定时每分,或者每小时,或者每天,或者每月进行执行,也支持可以通过与linux的crontab表达式类似的写法来进行定时任务的执行
    	例如frequency 也可以写成以下方式
    	frequency="10 9 * * *"  每天上午的09:10:00开始执行任务
    	frequency="0 1 * * *"  每天凌晨的01:00开始执行任务
     -->
    <coordinator-app name="cron-job" frequency="${coord:minutes(1)}" start="${start}" end="${end}" timezone="GMT+0800"
                     xmlns="uri:oozie:coordinator:0.4">
            <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>
    
    修改workflow.xml
    vim workflow.xml
    <workflow-app xmlns="uri:oozie:workflow:0.5" name="one-op-wf">
        <start to="action1"/>
        <action name="action1">
        <shell xmlns="uri:oozie:shell-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <exec>${EXEC}</exec>
            <!-- <argument>my_output=Hello Oozie</argument> -->
            <file>/user/root/oozie_works/cron-job/${EXEC}#${EXEC}</file>
    
            <capture-output/>
        </shell>
        <ok to="end"/>
        <error to="end"/>
    </action>
        <end name="end"/>
    </workflow-app>
    
  • 4.上传到hdfs对应路径
    cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works
    hdfs dfs -put cron-job/ /user/root/oozie_works/
    
  • 5.运行定时任务
    cd /export/servers/oozie-4.1.0-cdh5.14.0
    bin/oozie job -oozie http://node03:11000/oozie -config oozie_works/cron-job/job.properties -run
    
原文地址:https://www.cnblogs.com/zzzsw0412/p/12772455.html