oozie常用语句

一.oozie的介绍:oozie可以被称为一个调度系统,具体可参照此篇博文:http://shiyanjun.cn/archives/684.html
以上这篇博文将oozie的功能和使用方法介绍的很详细
二.oozie执行后续监控:可以将oozie的执行结果写入mysql数据表中,通过本地的sh mysql.sh可以查看oozie的执行情况:
1.执行时长统计:

select 
     tp.app_name
    ,ta.id 
    ,(unix_timestamp(tb.end_time) - unix_timestamp(tb.created_time))/60 long_minutes
    ,date_format(adddate(date(ta.nominal_time),interval -1 day),'%Y%m%d') data_date
from 
(
    select * 
    from COORD_JOBS ---oozie job的报表
    where status='RUNNING'
    -- and app_name like 'ods%'
) tp inner join 
(
    SELECT * 
    FROM COORD_ACTIONS ---oozie action的list报表
) ta on tp.id = ta.job_id 
AND tp.last_action_number=ta.action_number 
inner join 
(
    select * 
    from WF_ACTIONS --oozie每个action执行时间报表
    where id like '%hive%'
) tb on ta.external_id = tb.wf_id
order by long_minutes desc 
LIMIT 50;

上述代码可用于查看执行时长较长的任务名称,便于优化代码。
2.用于检查任务状态

select   
    -- ta.id,
    concat('oozie job -rerun ',tb.id,' -action ',ta.action_number) as cmd ,tb.app_name,ta.status    
from (select * from oozie.COORD_ACTIONS where status not in ('SUCCEEDED') ) ta 
inner join  
( 
    SELECT * FROM COORD_JOBS   
    where (app_name like '%fact%' or app_name like '%rpt%'  or app_name like 'dim_%' or app_name like 'ods%' or app_name like 'dw%') 
    and status = 'RUNNING' 
) tb 
on ta.job_id = tb.id 
-- where ta.status not in ('WAITING','READY')
order by status ,app_name;

3.查指定任务,用于获得job名以及包含多少action

SELECT app_name,concat('oozie job -rerun ',id,' -action ',last_action_number),status as rerun 
FROM COORD_JOBS   where  (app_name like '%yezhu%') 
and status = 'RUNNING' 

4.当需要重刷历史数据时,需要rerun多天action时,可用以下方法:

    update coord_jobs 
    set concurrency=3 ---并发的数量,应考虑集群难度,不要太高
    where id in (
        '0402926-161231135848541-oozie-bigd-C'  
    );
    commit ;

5.oozie中job不能重复,需要检查是否多启动job时,用以下方法:

    SELECT app_name,count(1) cnt  FROM COORD_JOBS   
    where   status = 'RUNNING' 
    group by app_name 
    having cnt >1 
    或者
  SELECT app_name,count(distinct id) cnt FROM COORD_JOBS   
    where (app_name like '%fact%' or app_name like '%rpt%'  or app_name like 'dim_%' or app_name like 'ods%' or app_name like 'dw%' ) 
    and status = 'RUNNING' 
    group by app_name
    having cnt >1 ;

6.如果想更改某些action的状态,可用以下方法:

update oozie.COORD_ACTIONS 
set status='SUCCEEDED'
where id in (
 '0047657-160714171251022-oozie-bigd-C@75'---action名字
,'0047657-160714171251022-oozie-bigd-C@73'
,'0047657-160714171251022-oozie-bigd-C@74'
,'0047657-160714171251022-oozie-bigd-C@72'
);
commit ;

如果看过oozie配置文档就会发现,oozie需要配置三个文件:job.properties,coordinator.xml,workflow.xml 此外应该还有一个需要定时执行的文件,假设文件名为test.sql ,这四个文件调试好后,放在本地目录中,需要上传到hadoop文件目录中:假设本地目录是/home/datadev/oozie_jobs/rpt/test(文件夹名字最好和sql文件一致)目录中的文件分别是:
job.properties,coordinator.xml,workflow.xml,test.sql
则hadoop上应建一个和本地相同名称的文件夹

在hadoop上创建文件夹 hadoop fs -mkdir oozie/rpt/test
grep 'rpt--' *
2.hadoop dfs -put -f * oozie/rpt/test --全部传过去如果重复覆盖
3. hadoop fs -put -f job.properties  oozie/rpt/test/ --只传job.properties这一个文件
4. hadoop fs -ls oozie/rpt/test/ --查看文件夹内容
5. hadoop fs -ls oozie/rpt/test/test.sql  --查看文件内容

oozie常见命令操作:


 1、测试任务
 oozie job -config job.properties -dryrun 
 2、正式提交运行一个任务
 oozie job -config job.properties -run 
 3、杀死一个任务
 oozie job -kill job_id     
 4、杀死一个action
 oozie job -kill job_id -action action_number
 5、重跑一个action 
 oozie job -rerun job_id -action action_number
 6、更新coordinator
 oozie job -update job_id

有时候更新完代码后用update不管用,只能把jobkill 了重新跑。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值