工作流调度器azkaban
1 为什么需要工作流调度系统
  1)一个完整的数据分析系统通常都是由大量任务单元组成:shell脚本程序,java程序,mapreduce程序、hive脚本等
  2)各任务单元之间存在时间先后及前后依赖关系
  3)为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行;

  例如,我们可能有这样一个需求,某个业务系统每天产生20G原始数据,我们每天都要对其进行处理,处理步骤如下所示:
    1、 通过Hadoop先将原始数据同步到HDFS上;
    2、 借助MapReduce计算框架对原始数据进行转换,生成的数据以分区表的形式存储到多张Hive表中;
    3、 需要对Hive中多个表的数据进行JOIN处理,得到一个明细数据Hive大表;
    4、 将明细数据进行复杂的统计分析,得到结果报表信息;
    5、 需要将统计分析得到的结果数据同步到业务系统中,供业务调用使用。

2 工作流调度实现方式
  简单的任务调度:直接使用linux的crontab来定义;
  复杂的任务调度:开发调度平台
  或使用现成的开源调度系统,比如ooize、azkaban等

3 常见工作流调度系统
  市面上目前有许多工作流调度器
  在hadoop领域,常见的工作流调度器有Oozie, Azkaban,Cascading,Hamake等

4 Azkaban与Oozie对比
  #功能
    两者均可以调度mapreduce,pig,java,脚本工作流任务
    两者均可以定时执行工作流任务
  #工作流定义
    Azkaban使用Properties文件定义工作流
    Oozie使用XML文件定义工作流
  #工作流传参
    Azkaban支持直接传参,例如${input}
    Oozie支持参数和EL表达式,例如${fs:dirSize(myInputDir)}
  #定时执行
    Azkaban的定时执行任务是基于时间的
    Oozie的定时执行任务基于时间和输入数据
  #资源管理
    Azkaban有较严格的权限控制,如用户对工作流进行读/写/执行等操作
    Oozie暂无严格的权限控制
  #工作流执行
    Azkaban有两种运行模式,分别是solo server mode(executor server和web server部署在同一台节点)和multi server mode(executor server和web server可以部署在不同节点)
    Oozie作为工作流服务器运行,支持多用户和多工作流
  #工作流管理
    Azkaban支持浏览器以及ajax方式操作工作流
    Oozie支持命令行、HTTP REST、Java API、浏览器操作工作流

5 Azkaban介绍
  Azkaban是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作
  和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的web用户界面
  维护和跟踪你的工作流。
  它有如下功能特点:
    #Web用户界面
    #方便上传工作流
    #方便设置任务之间的关系
    #调度工作流
    #认证/授权(权限的工作)
    #能够杀死并重新启动工作流
    #模块化和可插拔的插件机制
    #项目工作区
    #工作流和任务的日志记录和审计

6 azkaban实战
  Azkaba内置的任务类型支持command、java
  Command类型单一job示例
  1、创建job描述文件
    vi command.job
      #command.job
      type=command
      command=echo 'hello'
  2、将job资源文件打包成zip文件
    zip command.job
  3、通过azkaban的web管理平台创建project并上传job压缩包
    首先创建project
    上传zip包
  4、启动执行该job

  Command类型多job工作流flow
    1、创建有依赖关系的多个job描述
      第一个job:foo.job
        # foo.job
        type=command
        command=echo foo
      第二个job:bar.job依赖foo.job
        # bar.job
        type=command
        dependencies=foo
        command=echo bar
    2、将所有job资源文件打到一个zip包中
    3、在azkaban的web管理界面创建工程并上传zip包
    4、启动工作流flow

  HDFS操作任务
    1、创建job描述文件
      # fs.job
      type=command
      command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop fs -mkdir /azaz
    2、将job资源文件打包成zip文件
    3、通过azkaban的web管理平台创建project并上传job压缩包
    4、启动执行该job

  MAPREDUCE任务
    Mr任务依然可以使用command的job类型来执行
    1、创建job描述文件,及mr程序jar包(示例中直接使用hadoop自带的example jar)
      # mrwc.job
      type=command
      command=/home/hadoop/apps/hadoop-2.6.1/bin/hadoop jar hadoop-mapreduce-examples-2.6.1.jar
      wordcount /wordcount/input /wordcount/azout
    2、将所有job资源文件打到一个zip包中
    3、在azkaban的web管理界面创建工程并上传zip包
    4、启动job

  HIVE脚本任务
    1、创建job描述文件和hive脚本
    Hive脚本: test.sql
      use default;
      drop table aztest;
      create table aztest(id int,name string) row format delimited fields terminated by ',';
      load data inpath '/aztest/hiveinput' into table aztest;
      create table azres as select * from aztest;
      insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;

    Job描述文件:hivef.job
      # hivef.job
      type=command
      command=/home/hadoop/apps/hive/bin/hive -f 'test.sql'
    2、将所有job资源文件打到一个zip包中
    3、在azkaban的web管理界面创建工程并上传zip包
    4、启动job

Hadoop之Azkaban详解的更多相关文章

  1. 【转载】Hadoop历史服务器详解

    免责声明:     本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除.     原文作者:过往记忆(http://www.iteblog.com/)     原文地址: ...

  2. hadoop hdfs uri详解

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  3. hadoop基础-SequenceFile详解

    hadoop基础-SequenceFile详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.SequenceFile简介 1>.什么是SequenceFile 序列文件 ...

  4. Hadoop RPC机制详解

    网络通信模块是分布式系统中最底层的模块,他直接支撑了上层分布式环境下复杂的进程间通信逻辑,是所有分布式系统的基础.远程过程调用(RPC)是一种常用的分布式网络通信协议,他允许运行于一台计算机的程序调用 ...

  5. hadoop之mapreduce详解(进阶篇)

    上篇文章hadoop之mapreduce详解(基础篇)我们了解了mapreduce的执行过程和shuffle过程,本篇文章主要从mapreduce的组件和输入输出方面进行阐述. 一.mapreduce ...

  6. hadoop之yarn详解(框架进阶篇)

    前面在hadoop之yarn详解(基础架构篇)这篇文章提到了yarn的重要组件有ResourceManager,NodeManager,ApplicationMaster等,以及yarn调度作业的运行 ...

  7. Hadoop之WordCount详解

    花了好长时间查找资料理解.学习.总结 这应该是一篇比较全面的MapReduce之WordCount文章了 耐心看下去 1,创建本地文件 在hadoop-2.6.0文件夹下创建一个文件夹data,在其中 ...

  8. hadoop Shell命令详解

    调用文件系统(FS)Shell命令应使用bin/hadoop fs <args>的形式.所有的的FS shell命令使用URI路径作为参数.URI路径详解点击这里. 1.cat说明:将路径 ...

  9. hadoop之mapreduce详解(基础篇)

    本篇文章主要从mapreduce运行作业的过程,shuffle,以及mapreduce作业失败的容错几个方面进行详解. 一.mapreduce作业运行过程 1.1.mapreduce介绍 MapRed ...

随机推荐

  1. 使用腾讯云 GPU 学习深度学习系列之二:Tensorflow 简明原理【转】

    转自:https://www.qcloud.com/community/article/598765?fromSource=gwzcw.117333.117333.117333 这是<使用腾讯云 ...

  2. linux驱动基础系列--linux rtc子系统

    前言 linux驱动子系统太多了,连时钟也搞了个子系统,这导致一般的时钟芯片的驱动也会涉及到至少2个子系统,一个是时钟芯片接口子系统(比如I2c接口的时钟芯片),一个是内核给所有时钟芯片提供的rtc子 ...

  3. solaris遇到的问题整理总结

    solaris遇到的问题整理总结 http://zh888.blog.51cto.com/1684752/454326

  4. vue + webpack + gulp 简单环境 搭建

    一.物料准备 废话不多说,直接上 package.json { "name": "vwp", "version": "1.0.0& ...

  5. python--fnmatch

    import fnmatch ''' 这个库专门是用来做文件名匹配的,可以使用通配符如下 * 匹配任何数量的任意字符 ? 匹配单个数量的任意字符 [seq] 匹配seq中的任意字符 [!seq] 匹配 ...

  6. ssl介绍以及双向认证和单向认证原理

    SSL安全证书可以自己生成,也可以通过第三方的CA(Certification Authority)认证中心付费申请颁发. SSL安全证书包括: 1.       CA证书,也叫根证书或中间级证书.单 ...

  7. crontab自动备份MySQL数据库并删除5天前备份

    1.创建备份文件夹 //备份数据库文件夹 mkdir /data/backmysql //crontab日志 mkdir /data/logs   2.创建脚本文件 db_user="xxx ...

  8. foreach 与 Linq的 Select 效率问题

    Resharper 是一个非常强大的C#编程辅助工具,有着非常强的提示功能,代码纠正,代码简化等等 在编码过程中注意到这么一件事,可能是大家经常会遇到的: 遍历某个集合,然后经过处理生成另外一个集合, ...

  9. 虚拟机Visualbox安装Ubuntu Server

    关于虚拟机的新建及设置,请查看<Visualbox安装Ubuntu网络设置> 从光盘启动系统中,首先是选择语言,我这里选择英文 选择英文安装Ubuntu服务器 继续选择英文 选择地理位置, ...

  10. ACM数论-欧几里得与拓展欧几里得算法

    欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b). ...