【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
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM