簡介
-
概述
在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