ETL调度系统及常见工具对比:阿兹卡班,Oozie,数

  

最近遇到了很多正在研究ETL及其工具的同学向我们抱怨:同样都在用水壶,起点明明没差异,但为什么别人ETL做的那么快那么好,自己却不断掉坑?

  

其实,类似于像水壶这样开源的工具,已经覆盖了大部分日常工作所需的功能了,直接部署一套就能够解决企业基本的需求。但在实际使用的过程中我们也会发现,水壶如同是一个出场自带电话短信功能的智能手机,少了功能各异的智能应用的配合,和只能接打电话的老年机也没什么不同。

  

今天我们就先对其中一个比较火热的“应用程序”——调度工具,做一个简单的评测对比,帮助大家快速解锁用开源工具做ETL的新姿势。

  

一、为什么需要调度系统?

  

开局我们先扫盲。

  

我们都知道大数据的计算,分析和处理,一般由多个任务单元组成(蜂巢,Sparksql火花、壳牌等),每个任务单元完成特定的数据处理逻辑。

  

多个任务单元之间往往有着强依赖关系,上游任务执行并成功,下游任务才可以执行。比如上游任务结束后拿到一个结果,下游任务需结合的结果才能产出B结果,因此下游任务的开始一定是在上游任务成功运行拿到结果之后才可以开始。

  

而为了保证数据处理结果的准确性,就必须要求这些任务按照上下游依赖关系有序,高效的执行。一个较为基础的处理方式是,预估出每个任务处理所需时间,根据先后顺序,计算出每个任务的执行的起止时间,通过定时跑任务的方式,让整个系统保持稳定的运行。

  

一个完整的数据分析任务最少执行一次,在数据量较少,依赖关系较为简单的低频数据处理过程中,这种调度方式完全可以满足需求。然而在企业级场景中,更多的是需要每天执行,如果任务数量较多,在任务启动的时间计算上就将耗费大量时间,另外如果出现上游任务执行时长超出原定预计时间或者运行异常的问题,上述的处理方式将完全无法应对,也会对人力物力造成重复损耗,因此,对于企业数据开发过程来说,一个完整且高效的工作流调度系统将起到至关重要的作用。

  

二、调度系统工具对比

  

很多同学上手ETL工作之后,最先接触到的应该是linux自带的定期执行程序的命令Crontab,使用简单,运行稳定,当安装完成操作系统之后,默认便会启动此命令。上手容易但是也有自己的缺点,比如当任务变多之后无法管理,Crontab在机器上,无法备份,挂机就没,因此我们在这里对Crontab不做过多介绍,主要针对较为成熟的工作流调度工具:Apache Oozie,阿兹卡班,数栖云进行横评。

  

1, Oozie

  

Oozie:训象人(调度mapreduce)。一个基于工作流引擎的开源框架,Oozie需要部署到java servlet中运行,主要用于定时调度,多任务之间按照执行的逻辑顺序调度。

  

Oozie下载地址:https://oozie.apache.org

  

它有如下功能特点:

  

统一调度hadoop系统常见先生的任务启动,hdfs操作,壳牌调度,蜂巢操作等;
让复杂的依赖关系,时间触发,事件触发使用xml语言进行表达,开发效率增高(这个不一定,个人很讨厌xml,我觉得效率不高……),
一组任务使用一个DAG表示,使用图形表达,流程清晰。
支持多种任务调度,能完成大部分的hadoop任务,
程序定义支持EL常量和函数,表达丰富,
Oozie规定在完成工作后发送电子邮件通知;
阿兹卡班使用Web操作.Oozie支持,RestApi, Java API操作,

  

2,阿兹卡班

  

阿兹卡班是由Linkedin开源的一个批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程.Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供一个易于使用的网络用户界面维护和跟踪你的工作流。

  

阿兹卡班下载地址:https://azkaban.github.io/downloads.html

  

它有如下功能特点:

  

兼容任何版本的hadoop;
易于使用的web界面;
简单工作流的上传;
方便配置任务之间的依赖关系;
调度工作流;
模块化和可插拔的插件机制;
认证/授权;
能够杀死并重新启动工作流;
失败和成功的电子邮件提醒;

  

3,数栖云

  

基于数澜科技旗下产品数栖4.0部署于云端,面向于个人,企业主和独立数据应用开发商提供的一个一站式大数据工具平台和社区。基础套餐永久免费!透过数栖平台,个人和企业无需过多关注大数据底层存储和计算引擎的复杂的安装,繁琐的配置和日常运维,即可将自有的多来源业务系统数据进行集成和开发,形成数据资产,并赋能于自有业务场景,在云端轻松构建自有数据中台。

ETL调度系统及常见工具对比:阿兹卡班,Oozie,数