首页 > 其他 > 详细

Oozie和Azkaban的简单了解--大数据纪录片第七记

时间:2018-10-29 18:48:59      阅读:320      评论:0      收藏:0      [点我收藏+]

  刚刚了解了分布式应用程序的协调服务zookeeper,我们现在来了解一下工作流任务调度系统,就是作业协调的工具。主要了解两个主要产品oozie和azkaban。

  一、Oozie

    1、oozie本质就是一个作业协调的工具(底层原理是通过将xml语言转化成MapReduce程序来做,但只是集中在map端做处理,避免shuffle过程)。

    2、主要概念:

      ① workflow:工作流,有我们需要处理的每个工作组成,进行需求的流式处理

      ② coordinator:协调器,可以理解为工作流的协调器,可以将多个工作流协调成一个工作流来进行处理

      ③ bundle: 束,将一堆coordinator进行汇总处理

      简单来说,workflow是对要进行顺序化的工作的抽象,coordinator是对要进行顺序化的workflow的抽象,bundle是对一堆coordinator的抽象

    3、oozie的作业由三部分组成:job.properties,workflow.xml,lib

      job.properties是用来配置job中各种用到的参数

      workflow.xml是定义任务的整体流程的文件,需要注意的有三点:版本信息,EL函数,节点信息。workflow.xml文件需要被放置在HDFS上才能被oozie调度,如果启动需要调动MR任务,jar包同样需要在HDFS上。

        oozie的节点分为两种:流程控制节点和动作节点。①流程控制节点一般都是定义在工作流开始或者结束的位置,比如:start,end,kill等,以及提供工作流执行路径机制,比如:decision,fork,join等。②动作节点是负责执行具体动作的节点,比如拷贝文件,执行某个shell脚本等。

      lib是在workflow工作流定义的同级目录下,需要一个lib目录,在lib目录中存在MapReduce使用的jar包。需要注意的是,oozie并不是使用指定的jar包启动任务的,而是通过指定主类来启动任务的。在lib包中绝对不能存在某个jar包的不同版本和不能够出现多个相同的主类

    4、oozie的最终目录结构如下:

      /xxx/oozie/workflow.xml

      /xxx/oozie/lib

      /xxx/oozie/lib/mr-1.7-SNAPSHOT-package.jar  

      /xxx/oozie/lib/xxx.mr-1.7-SNAPSHOT-package.jar 

  二、Azkaban

    1、azkaban是由linkedin公司推出的批量工作流任务调度器,主要用于在一个工作流内以一个特定的顺序运行一组工作和流程。它的配置通过简单的key:value对的方式,通过配置中的dependencies来设置依赖关系,这个依赖必须是无环的,否则会被视为无效的工作流。azkaban使用job配置文件建立任务之间的依赖关系,并提供一个易于使用的web用户界面维护和跟踪你的工作流。

    2、azkaban主要由三个关键组件组成:关系型数据库(MySQL)、AzkabanWebServer、AzkabanExecutorServer。

      技术分享图片

    (1)azkaban使用数据库存储大部分状态,AzkabanWebServer和AzkabanExecutorServer都需要访问数据库

    (2)AzkabanWebServer是azkaban工作流系统的主要管理者,它负责project的管理、用户登录认证、定时执行工作流、跟踪工作流执行进度等一系列任务。同时,它还提供Web服务操作的接口,利用该接口,用户可以使用curl或其他ajax的方式,来执行azkaban的相关操作。操作包括:用户登录,创建project、上传workflow、执行workflow、查询workflow的执行进度、杀掉workflow等一系列操作,且这些操作的返回结果均是json的格式。并且azkaban使用方便,azkaban使用以.job为后缀名的键值属性文件来定义工作流中的各个任务,以及使用dependencies属性定义作业间的依赖关系链。这些作业文件和关联的代码最终以*.zip的方式通过azkaban UI传到web服务器上。

    (3)AzkabanExecutorServer主要负责具体的工作流的提交、执行,可以启动多个执行器,它通过mysql数据库来协调任务的执行。目前Azkaban将AzkabanExecutor分离成独立的服务器,这样方便某个任务流失败后,可以更方便的将其重新执行和便于Azkaban的升级。

 

 

 

    

Oozie和Azkaban的简单了解--大数据纪录片第七记

原文:https://www.cnblogs.com/qugemingzihaonan13/p/9872406.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!