开发者学堂课程【Azkaban 大数据调度系统课程精讲:工作流调度--概念产生背景】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/721/detail/12872
工作流调度--概念产生背景
大数据生态圈的工作流调度软件,Azkaban。工作流英文叫做 workflow,名字听去有一个线的概念,工作流它的专业解释说工作流叫做业务过程中的部分或整体在计算机应用环境下的自动化,通俗解释工作流指的是为了一个工作目标,有一个业务的流程,这个流程当中可能会有多个不同的步骤步骤之间可能还存在着依赖关系。把步骤编排出来一个流程,让计算机按程序自动执行,去完成这个事,就是工作流。
企业当中有很多方面会存在着依赖关系,为了减轻人为的工作量,设置好相互的依赖关系,系统完成 a 再 b 后 c,汇总得出 D,就是工作流的通俗解释。
大数据分析当中,通常来说开展数据分析的一个系统往往都会有很多模块组成。首先要去开展数据分析得有数据,要有数据采集的模块,对数据做存储与处理的模块,数据进行各种分析挖掘的模块,到最后数据应用展示的模块,模块之间存在着明显的时间上的依赖关系,后面一个模块几乎需要前一个模块做完,等待它的结果才能开展,这是第一点是有一个依赖关系存在。
第二点有一个周期性的概念。举例,今天分析昨天公司的业务情况,订单销售情况,要等到明天再分析今天的。是按每天来分析,也可以按照周按照月按照年来分析,这样周期性的重复的去执行。企业当中有两种概念,一个叫依赖的关系,一个叫周期性的关系。能否布置专人去做这个事需求的产生就是工作流出现的一个背景,当你有一个工作流的调度系统之后,经过简单的配置,软件就可以利用计算机自动的帮去执行。
相关的前提是你把你的业务规则描述清楚。当下在企业当中,如果要想实现工作流调度实现的方式大概可以分为两大类,第一大类是简单的任务调度,比如需要在每天凌晨2:00把数据库重启一下,或者把服务器重启一下,这时候简单的一个调度任务可以使用 Linux 各种小工去帮我完成,比如应用上 crontab 的小软件。写一个相关的脚本编制好之后,它就可以帮你简单的调度。
但是这一个可能 crontab 虽然很简单,缺点也比较明显,就是没办法设置复杂的依赖大型的项目,比如说1个大数据分析项目,里面去的 Java 程序,等等,这样复杂的东西由的 crontab 来完成,就有些吃力。
第二种方式,针对所谓的复杂任务调度,这时候就需要去进行的设计和软件帮我完成。
当下企业中有两种选择,第一利用公司比较大,有非常多的一个开发团队,有技术有能力,就可以去自主开发一个救助平台,比如阿里它可以使用自己开发的一个叫做宙斯 zues 这么一个软件。另外可以使用一些开源的免费的调度系统,在市面上有很多,这当中最熟悉的是来自于 Apache 的一款调度软件叫做 Oozie,它有名的原因很简单,因为它的背后官方背景很大,是 Apache 软件基金会。
每个软件都有自己的优缺点,比如说今天要学习的 Azkaban,它不是 Apache 的,但是它使用起来将会非常的方便。还有的 Cascading,hamake,这些软件都是开源免费的,开源意味着你可以获得它的源码,甚至可以结合它的相关的源码,结合公司的业务特性进行相关的修改,这是实现工作的调度的方式。
因此在企业当中,当需要进行工作流调度这样需求的时候,除非你觉得市面上这些开源的不好,自己去开发一个,否则的话是由开源的软件就可以搞定了,就是工作流在当下企业。今天所学的就是大数据生态圈中,最好用最著名的一个软件叫做 Azkaban 工作流调度器。
上图列举出来了当下 Hadoop 生态体系当中4种工作流调度器的一个特点。
这4款软件都可以去满足工作流的调度,但是他们在设计的理念,用户的目标,包括操作使用方面是具有非常大的一个差别。
技术选型的时候,涉及到选择模块软件的时候,需要从几个角度去考虑。第一个支持的功能,第二源码修改,第三结构清晰,第四是否方便对企业做一个定制化操作,这些因素作为参考标准。
在众多软件当中,最有名的 Oozie 来自于 Azkaban,最大的缺点是配置繁琐,适用于类似于 XML 格式的文件来描述的,你不管是调入的 Java 程序, MR 要描写大量的 XML 文件,当然它可以跟另外一块软件来进行配置。
今天所讲的软件当叫做 Azkaban,它是一个理应公司推出来的调度器,它的配置很简单,页面上简单操作一下就可以完成的调度,这个表格可以做一个参考。