oozie常用脚本,取消任务,死锁等

1.常用脚本

#校验配置文件
oozie validate -oozie http://path/to/oozie:11000/oozie /export/servers/oozie/test/coordinator.xml
#运行job
oozie job -oozie http://path/to/oozie:11000/oozie -config /export/servers/oozie/test/coordinator.properties -run
#查看信息
oozie job -oozie http://path/to/oozie:11000/oozie -info 00000**-**-oozie-demo-C
#查看日志
oozie job -oozie http://path/to/oozie:11000/oozie -log 00000**-**--oozie-demo-C
#Kill任务
oozie job -oozie http://path/to/oozie:11000/oozie -kill 00000**-**--oozie-demo-C
#查看所有普通任务
oozie  jobs
oozie jobs -oozie http://path/to/oozie:11000/oozie
#查看定时任务
oozie jobs -jobtype coordinator -oozie http:/path/to/oozie:11000/oozie
oozie jobs -oozie http://path/to/oozie:11000/oozie -jobtype coordinator

2.启停oozie任务

启动任务 java代码
oozie job http://path/to/oozie:11000/oozie -config job.properties -run
停止任务
oozie job http://path/to/oozie:11000/oozie -kill jobid
注意在停止任务的时候可能会出现权限问题,需要修改oozie-site.xml文件
hadoop.proxyuser.oozie.groups *
hadoop.proxyuser.oozie.hosts *
oozie.server.ProxyUserSever.proxyuser.hadoop.hosts *
oozie.server.ProxyUserSever.proxyuser.hadoop.groups *

3.Oozie任务死锁解决方案

产生死锁的必要条件就是任务会产生子任务,而Ooize的机制恰好是这样的:Oozie拉起一个YARN应用的机制是先拉起一个MapReduce任务(称为oozie launcher任务),然后该MR任务拉起真正的任务(文章刚开始提到的那些任务)。举个死锁的例子:某一时刻我们通过Oozie提交了n个Spark任务(通过Oozie的Spark Action或Shell Action),这样Oozie会向YARN提交n个MapReduce任务(oozie launcher),假设m(m≤n)个MR任务获得了资源并且创建了spark任务,但此时队列内的资源都被这m个MR任务占用了,所以spark任务一直在等待资源,而那m个MR任务却在等待spark任务完成返回,这样便产生了死锁。

4.借助hue,启停oozie

实景案例:在实际应用中,尤其是自建大数据集群的情况下,一般情况下会结合hue + oozie来实现集群的任务日常调取;但是hue上面的schedule中没有正在运行的任务,而每个周期结点workflow中一直有任务在运行,我们想要停止某个任务怎么办?

hue+oozie 日常任务调度界面

解决方案:点击workflows, 找到某个固定周期运行的任务,点击任务的,进入到任务的详情页面,点击详情页面的上一级任务id,如下图

oozie workflows

进入到调度任务的详情页面后,会直接调转到schedules页面,如下图;kill掉任务即可停止固定周期的任务