Oozie调度引擎

Oozie是一个管理Hadoop作业、可伸缩、可扩展、可靠的工作流调度系统,它内部定义了三种作业:

  1. 工作流作业:由一系列动作构成的有向无环图(DAGs)

  2. 协调器作业:按时间频率周期性触发Oozie工作流的作业

3.Bundle作业:管理协调器作业

一、首先示例提交HiveSQL脚本- 即时执行

1.进入到hue界面,点击【Query】- 【Schedule】- 【WorkFlow】,编辑工作流WorkFlows,

在这里插入图片描述
点击进去后,支持的Action会有很多,如下图:
hive/spark/pig/shell/Java/MR…
在这里插入图片描述
2.起一个workFlow的名称
在这里插入图片描述
3.将hive2拖拽到指定位置
在这里插入图片描述
4.然后,上传存在于HDFS上的脚本文件,如果没有上传,那么可以首先上传
在这里插入图片描述
5.上传脚本文件:
在这里插入图片描述
test_workflow_query.hql的内容:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions.pernode=3000;
insert into test_workflow_query partition(h)
select cast(ceil(rand()*100)as string), unix_timestamp(), cast(from_unixtime(unix_timestamp(), ‘yyyy-MM-dd’) as string) as h

在这里插入图片描述
6.然后点击“Add”添加,接下来点击保存,点击运行,点击submit
在这里插入图片描述
7.查看运行状态,可以点击进去看具体的任务
在这里插入图片描述
在这里插入图片描述

8.看结果

运行前表中的数据:
在这里插入图片描述
运行会后表中的数据:
在这里插入图片描述

二、看一个结构多一点的WorkFlow过程(一个Shell脚本+Hive脚本+参数)

1.返回到WorkFlow的界面,点击编辑,把个刚刚的WorFlow重新编辑
在这里插入图片描述
2.添加shell脚本和另外一个hive脚本,仅实现查询
在这里插入图片描述
Shell脚本(test_workflow_query_sh.sh):

#!/bin/bash
hive -e ‘select * from test_workflow_query’
echo $?
echo “与hive任务并行执行!!!”

HiveSQL脚本:

select ${hivevar:fields}
from ${tablename};

3.指定参数及文件
在这里插入图片描述
如果没有指定shell的files,出现的问题是:
在这里插入图片描述

4.点击【保存】- 【执行】
在这里插入图片描述

5.看结果
在这里插入图片描述

shell的log :
在这里插入图片描述
最底下Hive的log:
在这里插入图片描述

三、实现一个coordinate(新版这里是Schedules)

1.如图进行创建
在这里插入图片描述

2.指定Schedules名称
在这里插入图片描述

3.选择要指定的workFlow,按照时间频率周期性触发Oozie工作流的作业
在这里插入图片描述

4.指定规则的按
在这里插入图片描述

5.可以切换时间编辑格式,分别为有好的和crontab格式的
在这里插入图片描述
这里要注意的是,在指定周期的时候,他会按照指定的开始时间开始执行,因此这里可以【重跑数据数据】
在这里插入图片描述

6.关于参数
这里的参数指的是workflow中需要指定的参数
在这里插入图片描述
咱们可以试着调节这里的参数:

6.1在【first_WorkFlow】中进行修改
在这里插入图片描述

6.2点击进去之后
在这里插入图片描述

6.3然后进行存储,之后再进入到【first_WorkFlow】进行配置
在这里插入图片描述
在这里插入图片描述
6.4点击保存,之后去Schedule中配置

指定Parameters,这里给出的参数是当天的参数
以及时区的zhi’ding
在这里插入图片描述
${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, ‘DAY’), ‘yyyyMMdd’)}

Oozie常见其他系统常亮:

常量表示形式含义说明
${coord:minutes(int n)}返回日期时间:从一开始,周期执行n分钟
${coord:hours(int n)}返回日期时间:从一开始,周期执行n * 60分钟
${coord:days(int n)}返回日期时间:从一开始,周期执行n * 24 * 60分钟
${coord:months(int n)}返回日期时间:从一开始,周期执行n * M * 24 * 60分钟(M表示一个月的天数)
${coord:endOfDays(int n)}返回日期时间:从当天的最晚时间(即下一天)开始,周期执行n * 24 * 60分钟
${coord:endOfMonths(1)}返回日期时间:从当月的最晚时间开始(即下个月初),周期执行n * 24 * 60分钟
${coord:current(int n)}返回日期时间:从一个Coordinator动作(Action)创建时开始计算,第n个dataset实例执行时间

那么,最后,看看刚刚的Scheme跑的情况:
正在执行
在这里插入图片描述

已有四个WokeFlow执行成功
在这里插入图片描述

四、实现Bundle

创建Bundle,然后添加coordinator
在这里插入图片描述
可以进行集中的管理!

参考网址:https://blog.csdn.net/yaojianguo1234/article/details/80068009

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值