oozie 入门
转自:http://blackproof.iteye.com/blog/1928122
oozie概述:oozie能干什么
oozie格式:怎么用oozie
oozie执行:怎么运行oozie
oozie概述:
oozie是基于hadoop的调度器,以xml的形式写调度流程,可以调度mr,pig,hive,shell,jar等等。
主要的功能有
Workflow: 顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个)
Coordinator,定时触发workflow
Bundle Job,绑定多个coordinator
oozie格式:
写一个oozie,有两个是必要的:job.properties 和 workflow.xml(coordinator.xml,bundle.xml)
一、job.properties里定义环境变量
nameNode | hdfs://xxx5:8020 | hdfs地址 |
jobTracker | xxx5:8034 | jobTracker地址 |
queueName | default | oozie队列 |
examplesRoot | examples | 全局目录 |
oozie.usr.system.libpath | true | 是否加载用户lib库 |
oozie.libpath | share/lib/user | 用户lib库 |
oozie.wf.appication.path | ${nameNode}/user/${user.name}/... | oozie流程所在hdfs地址 |
注意:
workflow:oozie.wf.application.path
coordinator:oozie.coord.application.path
bundle:oozie.bundle.application.path
二、XML
1.workflow:
- <workflow-app xmlns="uri:oozie:workflow:0.2" name="wf-example1">
- <start to="pig-node">
- <action name="pig-node">
- <pig>
- <job-tracker>${jobTracker}</job-tracker>
- <name-node>${nameNode}</name-node>
- <prepare>
- <delete path="hdfs://xxx5/user/hadoop/appresult" />
- </prepare>
- <configuration>
- <property>
- <name>mapred.job.queue.name</name>
- <value>default</value>
- <property>
- <property>
- <name>mapred.compress.map.output</name>
- <value>true</value>
- <property>
- <property>
- <name>mapreduce.fileoutputcommitter.marksuccessfuljobs</name>
- <value>false</value>
- <property>
- </configuration>
- <script>test.pig</script>
- <param>filepath=${filpath}</param>
- </pig>
- <ok to="end">
- <error to="fail">
- </action>
- <kill name="fail">
- <message>
- Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
- </message>
- </kill>
- <end name="end"/>
- </workflow-app>
2.coordinator
- <coordinator-app name="cron-coord" frequence="${coord:hours(6)}" start="${start}" end="${end}"
- timezoe="UTC" xmlns="uri:oozie:coordinator:0.2">
- <action>
- <workflow>
- <app-path>${nameNode}/user/{$coord:user()}/${examplesRoot}/wpath</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设置的UTC,比北京时间晚8个小时,所以你要是把期望执行时间减8小时
coordinator里面传值给workflow,example,时间设置为亚洲
- <coordinator-app name="gwk-hour-log-coord" frequency="${coord:hours(1)}" start="${hourStart}" end="${hourEnd}" timezone="Asia/Shanghai"
- xmlns="uri:oozie:coordinator:0.2">
- <action>
- <workflow>
- <app-path>${workflowHourLogAppUri}/gwk-workflow.xml</app-path>
- <configuration>
- <property>
- <name>yyyymmddhh</name>
- <value>${coord:formatTime(coord:dateOffset(coord:nominalTime(),-1,'HOUR'), 'yyyyMMddHH')}</value>
- </property>
- </configuration>
- </workflow>
- </action>
- </coordinator-app>
3.bundle
- <bundle-app name='APPNAME' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='uri:oozie:bundle:0.1'>
- <controls>
- <kick-off-time>${kickOffTime}</kick-off-time>
- </controls>
- <coordinator name='coordJobFromBundle1' >
- <app-path>${appPath}</app-path>
- <configuration>
- <property>
- <name>startTime1</name>
- <value>${START_TIME}</value>
- </property>
- <property>
- <name>endTime1</name>
- <value>${END_TIME}</value>
- </property>
- </configuration>
- </coordinator>
- <coordinator name='coordJobFromBundle2' >
- <app-path>${appPath2}</app-path>
- <configuration>
- <property>
- <name>startTime2</name>
- <value>${START_TIME2}</value>
- </property>
- <property>
- <name>endTime2</name>
- <value>${END_TIME2}</value>
- </property>
- </configuration>
- </coordinator>
- </bundle-app>
oozie hive
- <action name="hive-app">
- <hive xmlns="uri:oozie:hive-action:0.2">
- <job-tracker>${jobTracker}</job-tracker>
- <name-node>${nameNode}</name-node>
- <job-xml>hive-site.xml</job-xml>
- <script>hivescript.q</script>
- <param>yyyymmdd=${yyyymmdd}</param>
- <param>yesterday=${yesterday}</param>
- <param>lastmonth=${lastmonth}</param>
- </hive>
- <ok to="result-stat-join"/>
- <error to="fail"/>
- </action>
oozie运行
启动任务:
- oozie job -oozie http://xxx5:11000/oozie -config job.properties -run
停止任务:
oozie job -oozie http://localhost:8080/oozie -kill 14-20090525161321-oozie-joe
注意:在停止任务的时候,有的时候会出现全线问题,需要修改oozie-site.xml文件
hadoop.proxyuser.oozie.groups *
hadoop.proxyuser.oozie.hosts *
oozie.server.ProxyUserServer.proxyuser.hadoop.hosts *
oozie.server.ProxyUserServer.proxyuser.hadoop.groups *
oozie 入门的更多相关文章
- Oozie入门
作者 Boris Lublinsky, Michael Segel ,译者 侯伯薇 发布于 2011年8月18日 |注意:QCon全球软件开发大会(北京)2016年4月21-23日,了解更多详情! 分 ...
- Oozie 快速入门
设想一下,当你的系统引入了spark或者hadoop以后,基于Spark和Hadoop已经做了一些任务,比如一连串的Map Reduce任务,但是他们之间彼此右前后依赖的顺序,因此你必须要等一个任务执 ...
- oozie工作流相关入门整理
Oozie支持工作流,其定义通过将多个Hadoop Job的定义按照一定的顺序组织起来,然后作为一个整体按照既定的路径运行.一个工作流已经定义了,通过启动该工作流Job,就会执行该工作流中包含 ...
- 入门大数据---安装ClouderaManager,CDH和Impala,Hue,oozie等服务
1.要求和支持的版本 (PS:我使用的环境,都用加粗标识了.) 1.1 支持的操作系统版本 操作系统 版本 RHEL/CentOS/OL with RHCK kernel 7.6, 7.5, 7.4, ...
- 大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍
Technorati 标记: hadoop,生态圈,ecosystem,yarn,spark,入门 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用 ...
- Hadoop入门
一.Hadoop是什么 1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 2)Hadoop主要解决,海量数据的存储和海量数据的分析计算问题. 3)广义上来说,Hadoop通常是指 ...
- 【Oozie学习之一】Oozie
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 CM5.4 一.简介Oozie由Cloudera公司贡献给A ...
- [转帖]Flink(一)Flink的入门简介
Flink(一)Flink的入门简介 https://www.cnblogs.com/frankdeng/p/9400622.html 一. Flink的引入 这几年大数据的飞速发展,出现了很多热门的 ...
- 大数据学习笔记之Hadoop(一):Hadoop入门
文章目录 大数据概论 一.大数据概念 二.大数据的特点 三.大数据能干啥? 四.大数据发展前景 五.企业数据部的业务流程分析 六.企业数据部的一般组织结构 Hadoop(入门) 一 从Hadoop框架 ...
随机推荐
- Atitti 过程导向 vs 结果导向 attlax的策
Atitti 过程导向 vs 结果导向 attilax的策略 1. 结果导向的问题 以结果为导向”的明显弊端2 1.1. 白猫黑猫的策略是错误的2 1.2. 为了目的不择手段,完全违背了程序正义原则2 ...
- Fluent UDF【5】:第一个UDF
这里以一个简单的初始化案例来描述UDF的使用过程. 0 Fluent中的Patch Fluent中提供了全域初始化以及局部Patch功能.对于整体区域的全局初始化可以采用starndard及hybri ...
- Linux系统/boot目录破损无法启动怎么办
linux系统中的/boot目录存放着系统开机所需要的各种文件,其中包含内核.开机菜单及所需配置文件等等.但是当不小心删除了/boot目录里的某些文件或者干脆整个/boot目录都不见了的情况下,该如何 ...
- c++11实现一个简单的lexical_cast
boost中有一个lexical_cast可以用统一的方式来做基本类型之间的转换,比如字符串到数字,数字到字符串,bool和字符串及数字之间的相互转换.boost::lexical_cast的用法比较 ...
- 【DIOCP开源项目】实际应用案例
案例1 DIOCP是Delphi下进行IOCP服务端通讯开发的一个非常好的开源框架,稳定.高效并且使用起来十分简单. 自己两个多月之前因为需要使用Delphi开发一个TCP服务端,当时也是到处爬文,希 ...
- 【Socket】Socket网络编程常用的结构及函数小结
名词解析 IP地址的作用是标示计算机的网卡地址,每台计算机都有一个IP地址: 端口是指计算机中为了标示在计算机中访问网络的不同程序而设的编号,并不是网卡接线的端口,而是不同程序的逻辑编号,并不是实际存 ...
- 【ARM】2440裸机系列-图片显示
功能 LCD显示字汉字,字符和图片 说明 汉字,字符和图片需要用相应的取模软件得到相应的c文件,然后包含到工程中 主要代码 1)绘制背景 void Brush_ U32 c) { int x,y ...
- 【嵌入式】使用Cross Toolchain构建交叉工具链
Preface 前面编译linux内核的时候,用各种cross版本都不行啊,真是纠结,于是就想着自己也要会编译交叉工具的方法,然后各种尝试,各种问题啊,最后还是没解决(还有其它事情),步骤我都走熟了, ...
- Asp.Net MVC Areas区域说明
一般网站分为前台+会员后台+管理员后台,做过webform的人都会把会员后台页面放在user中,把管理员后台页面放在admin中 会员后台访问:www.xxx.com/user/xxx.aspx 管理 ...
- vue中使用animate.css动画库
1.安装: npm install animate.css --save 2.引入及使用: //main.js中 import animated from 'animate.css' Vue.use( ...