转自: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:

  1. <workflow-app xmlns="uri:oozie:workflow:0.2" name="wf-example1">
  2. <start to="pig-node">
  3. <action name="pig-node">
  4. <pig>
  5. <job-tracker>${jobTracker}</job-tracker>
  6. <name-node>${nameNode}</name-node>
  7. <prepare>
  8. <delete path="hdfs://xxx5/user/hadoop/appresult" />
  9. </prepare>
  10. <configuration>
  11. <property>
  12. <name>mapred.job.queue.name</name>
  13. <value>default</value>
  14. <property>
  15. <property>
  16. <name>mapred.compress.map.output</name>
  17. <value>true</value>
  18. <property>
  19. <property>
  20. <name>mapreduce.fileoutputcommitter.marksuccessfuljobs</name>
  21. <value>false</value>
  22. <property>
  23. </configuration>
  24. <script>test.pig</script>
  25. <param>filepath=${filpath}</param>
  26. </pig>
  27. <ok to="end">
  28. <error to="fail">
  29. </action>
  30. <kill name="fail">
  31. <message>
  32. Map/Reduce failed, error               message[${wf:errorMessage(wf:lastErrorNode())}]
  33. </message>
  34. </kill>
  35. <end name="end"/>
  36. </workflow-app>

2.coordinator

  1. <coordinator-app name="cron-coord" frequence="${coord:hours(6)}" start="${start}" end="${end}"
  2. timezoe="UTC" xmlns="uri:oozie:coordinator:0.2">
  3. <action>
  4. <workflow>
  5. <app-path>${nameNode}/user/{$coord:user()}/${examplesRoot}/wpath</app-path>
  6. <configuration>
  7. <property>
  8. <name>jobTracker</name>
  9. <value>${jobTracker}</value>
  10. </property>
  11. <property>
  12. <name>nameNode</name>
  13. <value>${nameNode}</value>
  14. </property>
  15. <property>
  16. <name>queueName</name>
  17. <value>${queueName}</value>
  18. </property>
  19. </configuration>
  20. </workflow>
  21. </action>

注意:coordinator设置的UTC,比北京时间晚8个小时,所以你要是把期望执行时间减8小时

coordinator里面传值给workflow,example,时间设置为亚洲

  1. <coordinator-app name="gwk-hour-log-coord" frequency="${coord:hours(1)}" start="${hourStart}" end="${hourEnd}" timezone="Asia/Shanghai"
  2. xmlns="uri:oozie:coordinator:0.2">
  3. <action>
  4. <workflow>
  5. <app-path>${workflowHourLogAppUri}/gwk-workflow.xml</app-path>
  6. <configuration>
  7. <property>
  8. <name>yyyymmddhh</name>
  9. <value>${coord:formatTime(coord:dateOffset(coord:nominalTime(),-1,'HOUR'), 'yyyyMMddHH')}</value>
  10. </property>
  11. </configuration>
  12. </workflow>
  13. </action>
  14. </coordinator-app>

3.bundle

  1. <bundle-app name='APPNAME' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='uri:oozie:bundle:0.1'>
  2. <controls>
  3. <kick-off-time>${kickOffTime}</kick-off-time>
  4. </controls>
  5. <coordinator name='coordJobFromBundle1' >
  6. <app-path>${appPath}</app-path>
  7. <configuration>
  8. <property>
  9. <name>startTime1</name>
  10. <value>${START_TIME}</value>
  11. </property>
  12. <property>
  13. <name>endTime1</name>
  14. <value>${END_TIME}</value>
  15. </property>
  16. </configuration>
  17. </coordinator>
  18. <coordinator name='coordJobFromBundle2' >
  19. <app-path>${appPath2}</app-path>
  20. <configuration>
  21. <property>
  22. <name>startTime2</name>
  23. <value>${START_TIME2}</value>
  24. </property>
  25. <property>
  26. <name>endTime2</name>
  27. <value>${END_TIME2}</value>
  28. </property>
  29. </configuration>
  30. </coordinator>
  31. </bundle-app>

oozie hive

  1. <action name="hive-app">
  2. <hive xmlns="uri:oozie:hive-action:0.2">
  3. <job-tracker>${jobTracker}</job-tracker>
  4. <name-node>${nameNode}</name-node>
  5. <job-xml>hive-site.xml</job-xml>
  6. <script>hivescript.q</script>
  7. <param>yyyymmdd=${yyyymmdd}</param>
  8. <param>yesterday=${yesterday}</param>
  9. <param>lastmonth=${lastmonth}</param>
  10. </hive>
  11. <ok to="result-stat-join"/>
  12. <error to="fail"/>
  13. </action>

oozie运行

启动任务:

  1. 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 入门的更多相关文章

  1. Oozie入门

    作者 Boris Lublinsky, Michael Segel ,译者 侯伯薇 发布于 2011年8月18日 |注意:QCon全球软件开发大会(北京)2016年4月21-23日,了解更多详情! 分 ...

  2. Oozie 快速入门

    设想一下,当你的系统引入了spark或者hadoop以后,基于Spark和Hadoop已经做了一些任务,比如一连串的Map Reduce任务,但是他们之间彼此右前后依赖的顺序,因此你必须要等一个任务执 ...

  3. oozie工作流相关入门整理

        Oozie支持工作流,其定义通过将多个Hadoop Job的定义按照一定的顺序组织起来,然后作为一个整体按照既定的路径运行.一个工作流已经定义了,通过启动该工作流Job,就会执行该工作流中包含 ...

  4. 入门大数据---安装ClouderaManager,CDH和Impala,Hue,oozie等服务

    1.要求和支持的版本 (PS:我使用的环境,都用加粗标识了.) 1.1 支持的操作系统版本 操作系统 版本 RHEL/CentOS/OL with RHCK kernel 7.6, 7.5, 7.4, ...

  5. 大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍

    Technorati 标记: hadoop,生态圈,ecosystem,yarn,spark,入门 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用 ...

  6. Hadoop入门

    一.Hadoop是什么 1)Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 2)Hadoop主要解决,海量数据的存储和海量数据的分析计算问题. 3)广义上来说,Hadoop通常是指 ...

  7. 【Oozie学习之一】Oozie

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 CM5.4 一.简介Oozie由Cloudera公司贡献给A ...

  8. [转帖]Flink(一)Flink的入门简介

    Flink(一)Flink的入门简介 https://www.cnblogs.com/frankdeng/p/9400622.html 一. Flink的引入 这几年大数据的飞速发展,出现了很多热门的 ...

  9. 大数据学习笔记之Hadoop(一):Hadoop入门

    文章目录 大数据概论 一.大数据概念 二.大数据的特点 三.大数据能干啥? 四.大数据发展前景 五.企业数据部的业务流程分析 六.企业数据部的一般组织结构 Hadoop(入门) 一 从Hadoop框架 ...

随机推荐

  1. 在c和c++中的求绝对值

    在c语言中,根据类型的不同,求绝对值函数也不同. int abs(int x) double fabs(double x) 求int类型用abs,求浮点类型用fabs. 而且这两个函数的所在头文件也不 ...

  2. Android 如何在Eclipse 引入外部纯Java项目(不是打成Jar使用)

    应用情景--如标题: 在Eclipse的 “Android启动项目”中引入“外部的纯Java项目”,能运行的只有是基于Android的测试代码才可以. 一直很纳闷,如果外部写好一个Java插件(例如服 ...

  3. shiro 自定义过滤器,拦截过期session的请求,并且以ajax形式返回

    自定义过滤器: public class CustomFormAuthenticationFilter extends FormAuthenticationFilter { @Override pro ...

  4. [jk]服务器远控卡及kvm切换器

    远控卡的需求 经常我们有这么一个需求,那就是某一台器服务器突然宕机,不能启动,而机房却在外地.解决这个问题的方法有两种,一是联系机房人员,二是通过idrac卡远程连接.我们必须根据事情的轻重缓急,来选 ...

  5. 自定义Django中间件(登录验证中间件实例)

    前戏 我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面.我们通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可能也需要加上装饰 ...

  6. Python 使用pymysql连接MySQL

    由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 pymysql 模块. pymysql 模块可以通过 pip 安装.但如果你使用的是 p ...

  7. 利用es-checker检测当前node对ES6的支持情况

    ode.js发展非常快,对es6特性的支持也越来越良心,但node.js版本很多,各版本对es6的支持度都不一样,为了能清晰的了解各版本对es6特性的支持,需要有一个工具能提供比较清晰的支持说明,甚至 ...

  8. MSSQL 的Top 和 MAX 效率测试

    环境: MSSQL 2008, 都在没有使用缓存的情况下面执行 表中有8W 条记录 分类1有134条记录 分别测试了3个语句 -- A select 字段1 from 表1 WHERE Ftype=' ...

  9. 【Android】事件输入系统-代码层次解读

    本文基于Android-4.0 理论层次解读 请看:www.cnblogs.com/lcw/p/3373214.html 如何管理各种驱动设备 在理论中谈到EventHub,这个一看就是一个做实事的, ...

  10. ubuntu rar文件解压中文乱码问题

    http://blog.csdn.net/android_huber/article/details/7382867 前段时间经常要在ubuntu系统中去解压rar的文件,但是每次解压出来却总是出现中 ...