Oozie 任务调度框架(基于工作流)

oozie运行于hadoop集群,对hive,mr,flume,Soop,spark,shell等框架进行任务流调度
如: job1-->job2 & job3-->job4 & job5...
其中,job1用于采集数据,job2与job3用于数据清洗,job4,job5,jobn等用于数据分析
对MR和pigJobs任务调度与协调,需要用到servlet容器(自身框架封装了TomcatHTTPServer)
简单来说,该框架实现任务的自动化,各个处理部分不需要人为控制
PS:oozie如果其中一个job处理失败,不会有回滚,其处理的方式是直接停止

任务调度框架

1. crontab(最简单的任务调度框架)
  格式: *(分) *(时) *(日) *(月) *(周) command
  1-6:连续的时间
  1,6:不连续的时间
  */1:每小时
  第1列表示分钟1~59 每分钟用*或者 */1表示
  第2列表示小时1~23(0表示0点)
  第3列表示日期1~31
  第4列表示月份1~12
  第5列标识号星期0~6(0表示星期天)
  第6列要运行的命令
  例
  30 21 * * * /usr/local/etc/rc.d/lighttpd restart
  上面的例子表示每晚的21:30重启apache
  45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
  上面的例子表示每月1、10、22日的4 : 45重启apache
  10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
  上面的例子表示每周六、周日的1 : 10重启apache
  0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
  上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
  0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
  上面的例子表示每星期六的11 : 00 pm重启apache
  * */1 * * * /usr/local/etc/rc.d/lighttpd restart
  每一小时重启apache
  * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
  晚上11点到早上7点之间,每隔一小时重启apache
  0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
  每月的4号与每周一到周三的11点重启apache
  0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
  一月一号的4点重启apache
    crontab -r : 删除目前的时程表
    crontab -l : 列出目前的时程表
    crontab file [-u user]-用指定的文件替代目前的crontab
2. Azkaban
  linkdin:开源任务调度框架
properties文件控制工作流
3. Oozie
  Xml文件控制工作流
  大致工作流
  start -> job1 -> job2 & job3 -> ... --> ok > end
--> faile -> kill
4. Zeus
  宙斯是一个完整的Hadoop作业平台,支持
  Hadoop MR任务的调试运行
  Hive任务的调试运行
  Shell人数的运行
  Hive元数据的可视化查询数据与预览
  Hadoopr任务的自动调度
  PS:三者各有各的优点,但从使用角度来看oozie较流行,原因之一是hue框架能整合Hadoop所有框架,且界面友好,功能强大

Oozie三大功能

workflow jobs(简单的任务流)
coordinator jobs(加入定时调度:起始时间,结束时间,频率)
Bundle(多个coordinator jobs或这多个workflow的集合)

Oozie的架构

控制流节点 action
起始,结束,并发,分支,合并
动作节点 action
job: mapreduce action
job: hive action
job: shell action
子节点
实现
oozie server
hadoop集群
自带数据库 derby

Oozie安装部署

下载相应与Hadoop版本的oozie.tar.gz与ext-x.x.zip
  上传至linux
  安装oozieser
    配置hadoop代理core-site.xml
      hadoop.proxyuser.[OOZIE_SERVER_USER].hosts--[OOZIE_SERVER_HOSTNAME]
      hadoop.proxyuser.[OOZIE_SERVER_USER].groups--[USER_GROUPS_THAT_ALLOW_IMPERSONATION]
    重启Hadoop集群
  当前目录解压oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz
  oozie目录下多出一个oozie-4.0.0-cdh5.3.6文件夹(存放hadoop1与hadoop2的相关jar包)
  创建libext文件夹
    将hadoop对应版本的jar包放入
    将ext-x.x.zip也放入libext文件夹内
  创建sharelib库(HDFS上的jar库,用于运行所有job依赖)
    $ bin/oozie-setup.sh sharelib create -fs <FS_URI> [-locallib <PATH>]
    $ bin/oozie-setup.sh sharelib create -fs hdfs://hadoop09-linux-01.ibeifeng.com:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
  打包libext目录的jar包作为oozie运行的jar包库
    $ bin/oozie-setup.sh prepare-war [-d directory] [-secure]
    $ bin/oozie-setup.sh prepare-war
  初始化数据库
    $ bin/ooziedb.sh create -sqlfile oozie.sql -run DB Connection
  简单配置两个属性
    oozie-default.xml
      org.apache.oozie.service.JobsConcurrencyService移至第一行
      if not oozie的后台目录中会报NullPointerException错误
    oozie-site.xml
    oozie.service.HadoopAccessorService.hadoop.configurations=*=/opt/cdh-5.6.3/hadoop-2.5.0-cdh5.3.6/etc/hadoop
      if not 会报/user/Hadoop/share/lib文件找不到错误
  启动oozie
    $ bin/oozied.sh start (jps,进程多出一个BootStrap)

Oozie_初识的更多相关文章

  1. Android动画效果之初识Property Animation(属性动画)

    前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...

  2. 初识Hadoop

    第一部分:              初识Hadoop 一.             谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...

  3. python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)

    一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...

  4. 初识IOS,Label控件的应用。

    初识IOS,Label控件的应用. // // ViewController.m // Gua.test // // Created by 郭美男 on 16/5/31. // Copyright © ...

  5. UI篇(初识君面)

    我们的APP要想吸引用户,就要把UI(脸蛋)搞漂亮一点.毕竟好的外貌是增进人际关系的第一步,我们程序员看到一个APP时,第一眼就是看这个软件的功能,不去关心界面是否漂亮,看到好的程序会说"我 ...

  6. Python导出Excel为Lua/Json/Xml实例教程(一):初识Python

    Python导出Excel为Lua/Json/Xml实例教程(一):初识Python 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出 ...

  7. 初识SpringMvc

    初识SpringMvc springMvc简介:SpringMVC也叫Spring Web mvc,属于表现层的框架.Spring MVC是Spring框架的一部分,是在Spring3.0后发布的 s ...

  8. 初识redis数据类型

    初识redis数据类型 1.String(字符串) string是redis最基本的类型,一个key对应一个value. string类型是二进制安全的.意思是redis的string可以包含任何数据 ...

  9. Redis初识、设计思想与一些学习资源推荐

    一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...

随机推荐

  1. 使用java读取文件夹中文件的行数

    使用java统计某文件夹下所有文件的行数 经理突然交代一个任务:要求统计某个文件夹下所有文件的行数.在网上查了一个多小时没有解决.后来心里不爽就决定自己写一个java类用来统计文件的行数,于是花了两个 ...

  2. 3ds max 渲染模型

    有的模型因为法线方向问题,渲染的时候有的面缺失,只需要强制双面,如下图,就能把所有的面都渲染出来.

  3. webkit 模拟点击 winform

    刚在园子里看到有博主将WebBowser控件替换为Chrome内核(),链接http://www.cnblogs.com/gdyblog/p/WebKitBrowser.html 于是我想既然实现了替 ...

  4. Python学习笔记(3)

      1.元组 元组的定义符号是() ,元素定义与列表完全一致.不同的是元组的内容是不可变的. 2.字典 字典里面的内容是无序的. 字典的元素组成形式是 key:value key的定义规则:key是不 ...

  5. Linux下设置Mysql数据库编码

    重装系统后,要装个mysql服务器,发现添加数据时,一直错误,查其原因,原来时编码问题.Google了一下,可都不太一样,可能时数据库版本问题吧. 查看数据库版本: select version(); ...

  6. Oracle获取干净的建表DDL语句,不含其它存储、表空间、段属性

    早上一个同事资讯怎么获取到建表语句而且是不带存储那种SQL.Oracle自己提供了一个函数DBMS_METADATA.GET_DDL,但是获取到的建表语句含有存储.表空间.以及一些其他段的属性.如图: ...

  7. 详解Eclipse断点

    原文链接:http://www.blogjava.net/jiangshachina/archive/2011/11/20/364367.html 大家肯定都用过Eclipse的调试的功能,在调试的过 ...

  8. DXUT源码阅读笔记

    14.GetCapture() 函数功能:该函数取得捕获了鼠标的窗口(如果存在)的句柄.在同一时刻,只有一个窗口能捕获鼠标:此时,该窗口接收鼠标的输入,无论光标是否在其范围内.函数原型:HWND Ge ...

  9. 2016-2-10 tomcat基础学习

    安装tomcat服务器(1)配置 JAVA_HOME指向你的jdk主目录 也可以在startup.bat文件中设置JAVA_HOME环境变量. 首次使用JAVA_HOME前设置即可.set JAVA_ ...

  10. 16-1-26---图解HTTP(01)

    图解HTTP1.4.2确保可靠性的HTTP协议    按层次分,TCP位于传输层,提供可靠的字节流服务    所谓字节流服务,指为了方便传输,将大块数据分割成以报文为单位的数据包进行管理,而可靠的传输 ...