通过hue提交oozie定时任务
Oozie是什么?
Oozie是一种Java Web应用程序,它运行在Java servlet容器——即Tomcat——中,并使用数据库来存储以下内容:
- 工作流定义
- 当前运行的工作流实例,包括实例的状态和变量
Hue是什么?
Hue是一个可快速开发和调试Hadoop生态系统各种应用的一个基于浏览器的图形化用户接口。
Hue能干什么?
1,访问HDFS和文件浏览
2,通过web调试和开发hive以及数据结果展示
3,查询solr和结果展示,报表生成
4,通过web调试和开发impala交互式SQL Query
5,spark调试和开发
6,Pig开发和调试
7,oozie任务的开发,监控,和工作流协调调度
8,Hbase数据查询和修改,数据展示
9,Hive的元数据(metastore)查询
10,MapReduce任务进度查看,日志追踪
11,创建和提交MapReduce,Streaming,Java job任务
12,Sqoop2的开发和调试
13,Zookeeper的浏览和编辑
14,数据库(MySQL,PostGres,SQlite,Oracle)的查询和展示
提交oozie定时作业
1、进入hue界面,点击workflows工作流,编辑workflows。

2、点击create创建工作流。

3、本文以hive2作业sql任务为例,拖拽hive2到action区域。

4、例子是为车次表每天定时添加指定分区,分区为动态传参传入,和脚本类似,参数取值用${}包围。具体sql如下:
CREATE TABLE if NOT EXISTS dw_serv_checi_query_day (
user_id string,
railway_no string,
start_station string
) PARTITIONED BY (
dt STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE;
ALTER TABLE dw_serv_checi_query_day ADD PARTITION (dt = ${partdt});
保存为addpart.sql,上传hdfs,通过hue上传很方便。选中上传的文件,要给出参数值,不能省略,否自运行时${}讲不会被转义。这里值依然用${}包围,是因为具体值会在Coordinator中传入。保存workflow。

5、创建coordinator,


选择刚才创建的workflows,选择定时时间,可以选择每日,每周,每月等等,选择任务有效期,最后要给出之前参数的值,这里的值是代表前一天的日期,oozie有一些内置的常量。保存提交,OK,定时任务完成了。

这样就会在每天凌晨一点钟给车次表添加一个分区,分区值为前一天的日期,运行状态如下图

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实例执行时间 |
| ${coord:dataIn(String name)} | 在输入事件(input-events)中,解析dataset实例包含的所有的URI |
| ${coord:dataOut(String name)} | 在输出事件(output-events)中,解析dataset实例包含的所有的URI |
| ${coord:offset(int n, String timeUnit)} | 表示时间偏移,如果一个Coordinator动作创建时间为T,n为正数表示向时刻T之后偏移,n为负数向向时刻T之前偏移,timeUnit表示时间单位(选项有MINUTE、HOUR、DAY、MONTH、YEAR) |
| ${coord:hoursInDay(int n)} | 指定的第n天的小时数,n>0表示向后数第n天的小时数,n=0表示当天小时数,n<0表示向前数第n天的小时数 |
| ${coord:daysInMonth(int n)} | 指定的第n个月的天数,n>0表示向后数第n个月的天数,n=0表示当月的天数,n<0表示向前数第n个月的天数 |
| ${coord:tzOffset()} | ataset对应的时区与Coordinator Job的时区所差的分钟数 |
| ${coord:latest(int n)} | 最近以来,当前可以用的第n个dataset实例 |
| ${coord:future(int n, int limit)} | 当前时间之后的dataset实例,n>=0,当n=0时表示立即可用的dataset实例,limit表示dataset实例的个数 |
| ${coord:nominalTime()} | nominal时间等于Coordinator Job启动时间,加上多个Coordinator Job的频率所得到的日期时间。例如:start=”2009-01-01T24:00Z”,end=”2009-12-31T24:00Z”,frequency=”${coord:days(1)}”,frequency=”${coord:days(1)},则nominal时间为:2009-01-02T00:00Z、2009-01-03T00:00Z、2009-01-04T00:00Z、…、2010-01-01T00:00Z |
| ${coord:actualTime()} | Coordinator动作的实际创建时间。例如:start=”2011-05-01T24:00Z”,end=”2011-12-31T24:00Z”,frequency=”${coord:days(1)}”,则实际时间为:2011-05-01,2011-05-02,2011-05-03,…,2011-12-31 |
| ${coord:user()} | 启动当前Coordinator Job的用户名称 |
| ${coord:dateOffset(String baseDate, int instance, String timeUnit)} | 计算新的日期时间的公式:newDate = baseDate + instance * timeUnit,如:baseDate=’2009-01-01T00:00Z’,instance=’2′,timeUnit=’MONTH’,则计算得到的新的日期时间为’2009-03-01T00:00Z’。 |
| ${coord:formatTime(String timeStamp, String format)} | 格式化时间字符串,format指定模式 |
例如,昨天的日期就可以写为昨天日期 ${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, 'DAY'), 'yyyyMMdd')}
问题与解决办法
oozie会存在时区问题,默认会与中国时间会相差8个小时,这就需要oozie的时区,我使用的是cdh,所以设置很方便,进入cm的管理界面,进入oozie的设置,添加配置:

保存,重启,问题解决
通过hue提交oozie定时任务的更多相关文章
- 在Hue中提交oozie定时任务
可以参见下面这篇博文: 通过hue提交oozie定时任务
- HUE通过oozie工作流执行shell脚本
HUE通过oozie工作流执行shell脚本 2018年01月17日 16:20:38 阅读数:217 首先上传对应的jar包和storm.sh脚本到hdfs,脚本内容如下: 脚本主要内容是:从hdf ...
- [转]云计算之hadoop、hive、hue、oozie、sqoop、hbase、zookeeper环境搭建及配置文件
云计算之hadoop.hive.hue.oozie.sqoop.hbase.zookeeper环境搭建及配置文件已经托管到githubhttps://github.com/sxyx2008/clou ...
- 【Hadoop离线基础总结】Hue与oozie集成
目录 1.停止oozie与hue的进程 2.修改oozie的配置文件 3.修改hue的配置文件 4.启动hue与oozie的进程 5.页面访问hue 1.停止oozie与hue的进程 bin/oozi ...
- 【Hadoop离线基础总结】oozie定时任务设置
目录 简介 概述 oozie定时任务设置 1.拷贝定时任务的调度模板 拷贝hello.sh脚本 3.修改配置文件 4.上传到hdfs对应路径 5.运行定时任务 简介 概述 在oozie当中,主要是通过 ...
- 入门大数据---安装ClouderaManager,CDH和Impala,Hue,oozie等服务
1.要求和支持的版本 (PS:我使用的环境,都用加粗标识了.) 1.1 支持的操作系统版本 操作系统 版本 RHEL/CentOS/OL with RHCK kernel 7.6, 7.5, 7.4, ...
- 【原创】大叔经验分享(49)hue访问hdfs报错/hue访问oozie editor页面卡住
hue中使用hue用户(hue admin)访问hdfs报错: Cannot access: /. Note: you are a Hue admin but not a HDFS superuser ...
- Hue,Oozie运行sqoop找不到驱动解决办法
一.前言 平台:CDH 5.13.0 公司在客户那边有个项目需要部署cloudera平台,部署的时候,在这个版本的cdh中,除了基本组件,还选了sqoop2作为数据传输工具,希望能在Oozie中通过工 ...
- HUE中oozie执行shell
Oozie执行Shell,传入参数1. 新建一个workflow 2. 拖入一个shell 3. shell脚本如下 #!/bin/sh sqoop import --connect jdbc:mys ...
随机推荐
- 【鸡年大吉】,不知道写点啥,放个demo(小球碰撞)吧,有兴趣的看看
最初的想法是仿写win7的泡泡屏保效果,但是对于小球的斜碰问题一直没搞明白(如果你会这个,欢迎留言或者做个demo),所以只是简单处理了碰撞后的速度,有时候会看起来很搞笑~~~funny guy 话不 ...
- [C#]为微软ASP.NET官方教学视频增加字幕
前言 Microsoft Virtual Academy提供了学习ASP.NET的大量视频材料.(注1) 由于视频服务器位于海外,国内浏览速度并不理想,幸好官方提供了视频的下载地址以及英文字幕文件. ...
- [JQuery] Ajax使用过程中的问题总结
JQuery提供的ajax函数,在使用过程中,因为对参数的不了解,导致了很多错误,现在总结如下,以便时常温固,不犯同样的错误. 1.我在项目中使用到的ajax请求格式如下: $.ajax({ url: ...
- C++编程练习(9)----“图的存储结构以及图的遍历“(邻接矩阵、深度优先遍历、广度优先遍历)
图的存储结构 1)邻接矩阵 用两个数组来表示图,一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)存储图中边或弧的信息. 2)邻接表 3)十字链表 4)邻接多重表 5)边集数组 本文只用代码实现用 ...
- HUST 1586 数字排列
1586 - 数字排列 时间限制:1秒 内存限制:128兆 91 次提交 36 次通过 题目描述 现有n个k位的数字,你的任务是重新安排数字每一位的位置,使得重新安排后这n个数字中最大的数字和最小的数 ...
- matlab中hold指令、figure指令及subplot指令的使用
一.hold指令使用 正常情况下,plot指令显示figure时,以前的数据丢失了.使用hold on指令后,此后添加的一系列plot曲线将叠加在前一个图上当使用hold off后,恢复为默认状况,p ...
- Node.js学习笔记(一)基础介绍
什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...
- 什么是vue?
vue就是一个js库,并且无依赖别的js库,直接引入一个js文件就可以使用,跟jquery差不多.vue是法语中视图的意思,Vue.js是一个轻巧.高性能.可组件化的MVVM库,同时拥有非常容易上手的 ...
- 第八讲:I/O虚拟化
一.I/O虚拟化的产生 服务器单个千兆以太网端口肯定能够支持单个应用,但是当被分割为10个.15个或者更多的服务器负载时(这其中包括网络.存储以及服务器之间的流量)可能就不够用了. 当遇到I/O瓶颈时 ...
- LAMP部署
各组件版本:Linux:CentOS 7 1511 64位 (提前下载)Apache:Apache 2Mysql:MariaDB 5.5.52Php 5.4.16 VMware Workstation ...