最近遇到了很多正在研究ETL及其工具的同学向我们抱怨:同样都在用 Kettle ,起点明明没差异,但为什么别人ETL做的那么快那么好,自己却不断掉坑?
其实,类似于像 Kettle 这样开源的工具,已经覆盖了大部分日常工作所需的功能了,直接部署一套就能够解决企业基本的需求。但在实际使用的过程中我们也会发现,kettle 如同是一个出场自带电话短信功能的智能手机,少了功能各异的智能 App 的配合,和只能接打电话的老年机也没什么不同。
今天我们就先对其中一个比较火热的“App”——调度工具,做一个简单的评测对比,帮助大家快速解锁用开源工具做 ETL 的新姿势。
一、为什么需要调度系统?
开局我们先扫盲。
我们都知道大数据的计算、分析和处理,一般由多个任务单元组成(Hive、Sparksql、Spark、Shell等),每个任务单元完成特定的数据处理逻辑。
多个任务单元之间往往有着强依赖关系,上游任务执行并成功,下游任务才可以执行。比如上游任务结束后拿到 A 结果,下游任务需结合 A 结果才能产出 B 结果,因此下游任务的开始一定是在上游任务成功运行拿到结果之后才可以开始。
而为了保证数据处理结果的准确性,就必须要求这些任务按照上下游依赖关系有序、高效的执行。一个较为基础的处理方式是,预估出每个任务处理所需时间,根据先后顺序,计算出每个任务的执行的起止时间,通过定时跑任务的方式,让整个系统保持稳定的运行。
一个完整的数据分析任务最少执行一次,在数据量较少,依赖关系较为简单的低频数据处理过程中,这种调度方式完全可以满足需求。然而在企业级场景中,更多的是需要每天执行&#