当前位置: 首页 > Linux

ETL调度系统与常用工具对比:azkaban、oozie、taskctl

时间:2023-04-06 11:39:39 Linux

最近有很多研究ETL及其工具的小伙伴向我们抱怨:他们也在用Kettle,起点明明是一样的,为什么别人的呢?ETL这样做吗?速度这么好,你却老是掉坑里?事实上,像Kettle这样的开源工具已经涵盖了日常工作所需的大部分功能,部署一套就可以解决企业的基本需求。今天我们先对目前比较流行的“App”之一——调度工具做一个简单的评测对比,帮助大家快速解锁ETL开源工具使用新姿势。为什么需要调度系统?让我们先从识字开始。我们都知道大数据的计算、分析和处理一般是由多个任务单元(Hive、Sparksql、Spark、Shell等)组成,每个任务单元完成特定的数据处理逻辑。多个任务单元之间通常存在很强的依赖性。只有上游任务执行成功,下游任务才能执行。例如,上游任务完成并得到结果A后,下游任务需要将结果A组合产生结果B。因此,下游任务必须在上游任务成功运行并获得结果后启动。为了保证数据处理结果的准确性,这些任务必须按照上下游依赖关系有序、高效地执行。更基本的处理方法是预估每个任务所需的处理时间,按顺序计算出每个任务执行的起止时间,通过定时运行任务来保持整个系统的稳定运行。一个完整的数据分析任务至少执行一次。在数据量小、依赖关系相对简单的低频数据处理过程中,这种调度方式完全可以满足要求。但是在企业级场景下,每天需要执行的任务更多。如果有大量任务,计算任务开始时间会花费很多时间。另外,如果上游任务的执行时间超过了原来的预估时间或者运行异常等问题,上述处理方式根本无法处理,还会造成人力物力的反复损失。因此,对于企业数据开发过程,一个完整高效的工作流调度系统将起到至关重要的作用。调度工具比较OozieOozie:大象训练器(调度mapreduce)。Oozie是一个基于工作流引擎的开源框架,需要部署在javaservlet中运行,主要用于定时调度,多任务按照逻辑执行顺序进行调度。具有以下特点:1、统一调度hadoop系统中常见的mr任务启动、hdfs运行、shell调度、hive运行等;2.让复杂的依赖、时间触发、事件触发用xml语言表达,增加开发效率(这个不一定,我个人很讨厌xml,我觉得效率不高。。。);3、一组任务用DAG表示,使用图形化表达,流程清晰;4.支持多任务调度,可以完成大部分hadoop任务;5、程序定义支持EL常量和函数,表达式丰富;6、oozie规定工作完成后发送邮件通知;7.Azkaban使用Web操作。Oozie支持Web、RestApi、JavaAPI操作;AzkabanAzkaban是由Linkedin开源的批处理工作流任务调度器。用于在工作流中以特定顺序运行一组作业和流程。Azkaban定义了一种KV文件格式来建立任务之间的依赖关系,并提供易于使用的Web用户界面来维护和跟踪您的工作流程。它具有以下特点:1.Web用户界面2.方便上传工作流3.方便设置任务之间的关系4.调度工作流5.认证/授权(有权限的作业)6.能够杀死和重启作业流7.模块化和可插拔的插件机制8.项目工作区9.工作流和任务的记录和审计taskctl是一个全功能的作业自动化调度技术管理工具。通过TASKCTL,可以快速组织和有效管理这些作业以及各种参数化的操作控制。业内一般将这种技术称为作业调度,其技术本质是作业运行管理的自动控制。基于成都塔斯克旗下产品taskctl部署,面向个人、企业主、独立数据应用开发者的一站式大数据工具平台和社区。基本套餐永久免费!通过taskctl,个人和企业可以整合开发自己的多源业务系统数据,形成数据资产,而无需过多关注大数据底层存储和计算引擎的复杂安装、繁琐配置和日常运维,赋能自己的运营场景,轻松在云端搭建自己的数据中心。taskctl调度功能如下:1、完成20多种数据源的自适应调度:Mysql、Oracle、Hive、HBase、Redis、MongoDB、ODPS、Postgresql、ElasticSearch、WebService、GBase等;2、模块化、可插拔的插件机制:屏蔽各种应用平台的技术差异,适配统一的执行、停止、状态日志查询访问接口3、支持可视化工作流配置:支持图形拖拽、自动最小交叉布局,并清楚地显示作业节点之间的串并关系关系;可自定义不同类型的作业图标,快速定位正在执行作业的节点;4、支持任务告警:邮件、短信、微信、钉钉等多渠道订阅,平台消息、进程消息、职位消息多级推送。5、人工干预多样化:普通排班、自由排班、虚拟排班。强制中断、强制通过、禁止通过、预置断点、忽略条件等;6、支持作业优先级配置:平台级、进程级、作业级并行控制,资源权重设置。动态设置作业优先级到顶部和其他操作。7.支持工作流与工作流的组装:支持各种层次的调度元信息架构组织,如:项目à工作流(可嵌套)à模块(可嵌套)à作业8.支持工作流试运行:支持完整的流程开发体系,如编码→编译→调试→版本发布→运行一整套生命周期管理。9、错误任务快速定位:提供作业节点在“执行中、异常”等状态下的自动跟踪定位功能。总结ApacheOozie是一个重量级的任务调度系统,功能全面,但是部署和配置会比较麻烦,从crontab到Oozie的上手难度会很大。Azkaban是介于oozie和Crontab之间的工具,但是它不如Oozie安全。同时,如果出现故障,Azkaban将丢失所有工作流,而Oozie可以继续运行。taskctl与上面两个工具相比,解决了配置部署复杂的问题。在易于扩展的同时,在工作流上也有更多其他功能,方便开发和运维。当然,taskctl不仅仅是一个功能齐全的工作流调度工具。作为一站式大数据平台,还涵盖以下功能。无论是简单的ETL工作,还是复杂的数据中心建设工作,都可以使用taskctl来完成。基础版永久免费!无论遇到什么问题,都可以找客服解决。它是一个比开源产品好100倍的工具。你确定你可以试一试吗?