【开源】etl作业调度⼯具性能综合对⽐
最近遇到了很多正在研究ETL及其⼯具的伙伴向我们抱怨:同样都在⽤ Kettle ,起点明明没差异,但为什么别⼈ETL做的那么快那么好,⾃⼰却不断掉坑?
其实,类似于像 Kettle 这样开源的⼯具,已经覆盖了⼤部分⽇常⼯作所需的功能了,直接部署⼀套就能够解决企业基本的需求。
今天我们就先对其中⼀个⽐较⽕热的“App”——调度⼯具,做⼀个简单的评测对⽐,帮助⼤家快速解锁⽤开源⼯具做 ETL 的新姿势。
为什么需要调度系统?
开局我们先扫盲。
我们都知道⼤数据的计算、分析和处理,⼀般由多个任务单元组成(Hive、Sparksql、Spark、Shell等),每个任务单元完成特定的数据处理逻辑。
多个任务单元之间往往有着强依赖关系,上游任务执⾏并成功,下游任务才可以执⾏。⽐如上游任务结束后拿到 A 结果,下游任务需结合A 结果才能产出 B 结果,因此下游任务的开始⼀定是在上游任务成功运⾏拿到结果之后才可以开始。
⽽为了保证数据处理结果的准确性,就必须要求这些任务按照上下游依赖关系有序、⾼效的执⾏。⼀个较为基础的处理⽅式是,预估出每个任务处理所需时间,根据先后顺序,计算出每个任务的执⾏的起⽌时间,通过定时跑任务的⽅式,让整个系统保持稳定的运⾏。
⼀个完整的数据分析任务最少执⾏⼀次,在数据量较少,依赖关系较为简单的低频数据处理过程中,这种调度⽅式完全可以满⾜需求。然⽽在企业级场景中,更多的是需要每天执⾏,如果任务数量较多,在任务启动的时间计算上就将耗费⼤量时间,另外如果出现上游任务执⾏时长超出原定预计时间或者运⾏异常的问题,上述的处理⽅式将完全⽆法应对,也会对⼈⼒物⼒造成重复损耗,因此,对于企业数据开发过程来说,⼀个完整且⾼效的⼯作流调度系统将起到⾄关重要的作⽤。
调度⼯具对⽐
Oozie
Oozie:训象⼈(调度mapreduce)。⼀个基于⼯作流引擎的开源框架,Oozie需要部署到java servlet中运⾏,主要⽤于定时调度,多任务之间按照执⾏的逻辑顺序调度。
它有如下功能特点:
统⼀调度hadoop系统常见的mr任务启动,hdfs操作,shell调度,hive操作等;
让复杂的依赖关系,时间触发,事件触发使⽤xml语⾔进⾏表达,开发效率增⾼(这个不⼀定,个⼈很讨厌xml,我觉得效率不⾼…);
大数据etl工具有哪些⼀组任务使⽤⼀个DAG表⽰,使⽤图形表达,流程清晰;
⽀持多种任务调度,能完成⼤部分的hadoop任务;
程序定义⽀持EL常量和函数,表达丰富;
Oozie规定在完成⼯作后发送电⼦邮件通知;
Azkaban使⽤Web操作。Oozie⽀持Web,RestApi,Java API操作;
Azkaban
Azkaban是由Linkedin开源的⼀个批量⼯作流任务调度器。⽤于在⼀个⼯作流内以⼀个特定的顺序运⾏⼀组⼯作和流程。Azkaban定义了⼀种KV⽂件格式来建⽴任务之间的依赖关系,并提供⼀个易于使⽤的web⽤户界⾯维护和跟踪你的⼯作流。
它有如下功能特点:
Web⽤户界⾯
⽅便上传⼯作流
⽅便设置任务之间的关系
调度⼯作流
认证/授权(权限的⼯作)
能够杀死并重新启动⼯作流
模块化和可插拔的插件机制
项⽬⼯作区
⼯作流和任务的⽇志记录和审计
taskctl
是⼀款功能全⾯的作业⾃动化调度技术管理⼯具。通过TASKCTL,可以快速将这些作业组织起来,并
进⾏有效的管理以及各种参数化运⾏控制。在业界,普遍将这种技术称为作业调度,其技术本质是作业运⾏管理的⾃动化控制。
基于成都塔斯克旗下产品taskctl部署⾯向于个⼈、企业主和独⽴数据应⽤开发商提供的⼀个⼀站式⼤数据⼯具平台和社区。基础套餐永久免费!透过taskctl,个⼈和企业⽆需过多关注⼤数据底层存储和计算引擎的复杂的安装、繁琐的配置和⽇常运维,即可将⾃有的多来源业务系统数据进⾏集成和开发,形成数据资产,并赋能于⾃有作业场景,在云端轻松构建⾃有数据中台。
taskctl调度功能如下:
完成20多种数据源的适配调度:Mysql、Oracle、Hive、HBase、Redis、MongoDB、ODPS、Postgresql、ElasticSearch、WebService、GBase等;
模块化和可插拔的插件机制:屏蔽各种应⽤平台技术差异,适配统⼀的执⾏、停⽌及状态⽇志查询访问接⼝
⽀持可视化⼯作流配置:⽀持图形拖拽、⾃动化最⼩交叉排版,清楚地展⽰了作业节点之间的串并关系;不同类型作业图标⾃定义、正执⾏作业节点快速定位;
⽀持任务告警:邮件,短信,,钉钉等多渠道订阅,平台消息,流程消息、作业消息多层次推送。
⼈⼯⼲预多样化:正常调度,⾃由调度,虚拟调度。强制中断、强制通过、禁⽤通过、预设断点、忽略条件等;
⽀持作业优先级配置:平台级、流程级和作业级并⾏控制、资源权重设置。动态设置作业优先级置顶等操作。
⽀持⼯作流与⼯作流之间组装:⽀持各种层级的调度元信息架构组织,如:⼯程à⼯作流(可嵌套)à模块(可嵌套)à作业
⽀持⼯作流测试运⾏:⽀持流程开发完整体系,如编码à编译à调试à 版本发布à运⾏⼀整套完整的⽣命周期管理。
出错任务快速定位:提供了“正执⾏、异常”等状态的作业节点⾃动跟踪定位功能。
总结
Apache Oozie 是⼀个重量级的任务调度系统,功能全⾯,但是部署及配置会⽐较⿇烦,从 crontab 到 Oozie 上⼿会有⼀定难度。Azkaban 是介于 oozie 和 Crontab 之间的⼯具,但是安全性上不如 Oozie,同时如果出现失败情况,Azkaban会丢失所有的⼯作
流,Oozie则可以继续运⾏。taskctl相较于以上两种⼯具⽽⾔,解决了配置及部署复杂的问题,易于扩展的同时,也在⼯作流中有了更多⽅
便开发及运维的其他功能。
当然不仅仅是⼀个功能全⾯的⼯作流调度⼯具,作为⼀个⼀站式⼤数据平台,它同时涵盖以下功能,⽆论是简单的 ETL ⼯作,还是复杂的数据中台构建⼯作,使⽤taskctl都可以完成。基础版永久免费!⽆论遇到什么问题都能客服解决,⽐开源产品体验好 100 倍的⼯具,确定不来试试看嘛?
>>了解更多,关注"taskctl" 或 添加技术咨询 "Kitleer" 备注 "咨询"<<
声明:以上内容部分来⾃⽹络
参考:,,,
整理:沐⽩
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论