说明
使用 oozie 更多的应用场景是 执行定时任务
创建 工作目录
在 /program/oozie-4.1.0-cdh5.14.0 目录下创建 oozie_apps 目录
cd /program/oozie-4.1.0-cdh5.14.0
mkdir oozie_apps
编写shell
创建 目录
在 oozie_apps 目录下创建 std3_timer 目录
cd oozie_apps
mkdir std3_timer
cd std3_timer
编写脚本
vim test_oozie.sh
内容如下:
echo hello world >> /program/oozie_hello.txt
测试脚本是否可执行
修改权限:
chmod 777 test_oozie.sh
执行脚本:
./test_oozie.sh
执行结果:在 /program/ 目录下生成 oozie_hello.txt 文件,内容是:
hello world
最后一定要删除 /program/oozie_hello.txt 文件,不然验证 oozie是否正确执行该脚本
编写 job.properties
在 std3_timer 目录下创建 job.properties 文件
vim job.properties
内容如下:
nameNode=hdfs://hadoop1:8020
jobTracker=hadoop2:8032
queueName=default
examplesRoot=oozie_apps
oozie.coord.application.path=${nameNode}/${examplesRoot}/std3_timer/coordinator.xml
# 必须设置为未来时间
start=2021-11-21T18:50+0800
end=2022-11-21T18:25+0800
EXEC=test_oozie.sh
workflowAppUri=${nameNode}/${examplesRoot}/std3_timer/workflow.xml
shellpath=/${examplesRoot}/std3_timer/${EXEC}
解释:
- start:开始时间,一定要 未来时间,否则会出问题,见 链接
- end:结束时间,也要未来时间
- workflowAppUri:hdfs上的
workflow.xml路径
- nameNode:namenode ip、port
- jobTracker:resources Manager ip、port
- queueName:默认队列
- examplesRoot:工作目录
- oozie.coord.application.path:hdfs上的
coordinator.xml路径 - EXEC:要执行的脚本
- shellpath:shell脚本在 hdfs 上的路径
编写 workflow.xml
在 std3_timer 目录下创建 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>
<file>${shellpath}</file>
<capture-output/>
</shell>
<ok to="end"/>
<error to="end"/>
</action>
<end name="end"/>
</workflow-app>
编写 coordinator
在 std3_timer 目录下创建 coordinator.xml 文件
vim coordinator.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>
解释:
${coord:minutes(1)}:启动间隔时间,有两种表示方法timezone:设置东8时区
上传到 hdfs
cd /program/oozie-4.1.0-cdh5.14.0/
hadoop fs -put oozie_apps /
重新上传
重新上传需要先删除 hdfs 的相关文件夹
hadoop fs -rm -r /oozie_apps/std3_timer
执行
cd /program/oozie-4.1.0-cdh5.14.0
bin/oozie job -oozie http://hadoop3:11000/oozie -config oozie_apps/std3_timer/job.properties -run
解释:
oozie_apps/std3_timer/job.properties:本机job.properties所在的路径
写绝对路径也可以:/program/oozie-4.1.0-cdh5.14.0/oozie_apps/std3_timer/job.properties
在 oozie web查看
在 Coordinator 标签中可以查看结果:
在 yarn 查看结果
每次启动一个 MapReduce 程序运行,由 yarn 分配 运行在哪个节点上
在服务器查看生成的文件
根据上图的提示,到 hadoop3 的 /program 目录下查找 oozie_hello.txt 文件,如果有该文件,说明任务成功
每次创建12个任务
杀死任务
bin/oozie job -oozie http://hadoop3:11000/oozie -kill 0000004-211126111024680-oozie-root-C
解释: 0000004-211126111024680-oozie-root-C 就是启动任务时显示的 job id,如下图:




