etl作业配置开源调度工具taskctl统一平台搭建

etl作业配置开源调度工具taskctl统一平台搭建
etl作业配置开源调度工具taskctl统一平台搭建

什么是调度系统

调度系统,更确切地说,作业调度系统(Job Scheduler)或者说工作流调度系统(workflow Scheduler)是任何一个稍微有点规模,不是简单玩玩的大数据开发平台都必不可少的重要组成部分。

除了Crontab,Quartz这类偏单机的定时调度程序/库。开源的分布式作业调度系统也有很多,比较知名的比如:oozie,azkaban,chronos,zeus等等,此外,还有包括阿里的TBSchedule,SchedulerX,腾讯的Lhotse以及我司历尽十年磨砺的TASKCTL

作业系统的两大种类

现在市面上的调度系统根据功能性可以分为两类定时类作业调度系统&DAG工作流类作业调度系统这两类系统的架构和功能实现通常存在很大的差异,下面就来跟大家普及一下这两种作业系统的不同之处;

定时类作业系统

定时类系统的方向,重点定位于大量并发的任务分片执行场景;

在实际应用场景中,通常平时维护工作需要定时执行的业务逻辑相对离散无序,仅仅存在一定的简单关联。

例如:

?需要定时批量清理一批机器的磁盘空间,

?需要定时生成一批商品清单,

?需要定时批量对一批数据检索引,

?需要定时对一批用户发送推送通知等等。

核心目标基本两点:

1.作业分片逻辑支持:将一个大的任务拆分成多个小任务分配到不同的服务器上执行,难点在于要做到不漏,不重,保证负载平衡,节点崩溃时自动进行任务迁移等

2.高可用精确定时触发:由于平时经常涉及到实际业务流程的及时性和准确性,所以通常需要保证任务触发的强实时和可靠性

所以"负载均衡,弹性扩容",“状态同步”和“失效转移”通常是这类调度系统在架构设计时重点考虑的特性

DAG工作流类作业调度系统

主要定位于有序作业的调度依赖关系的正确处理,分片执行的逻辑通常不是系统关注的粒度,如果某些作业真的关注分片逻辑,通常交给后端集群(比如MR任务自带分片能力)或者具体类型的任务执行后端去实现。

DAG工作流类调度系统所服务的通常是作业繁多,作业之间的流程依赖比较复杂的场景;

如:大数据开发平台的离线数仓报表处理业务,从数据采集,清洗,到各个层级的报表的汇总运算,到最后数据导出到外部业务系统,一个完整的业务流程,可能涉及到成百上千个相互交叉依赖关联的作业。

所以DAG工作流类调度系统关注的重点,通常会包括:

?足够丰富灵活的依赖触发机制(如:时间触发任务,依赖触发任务,混合触发任务)

?作业的计划,变更和执行流水的管理和同步

?任务的优先级管理,业务隔离,权限管理等

?各种特殊流程的处理(如:暂停任务,重刷历史数据,人工标注失败/成功,临时任务和周期任务的协同等)

?完备的监控报警通知机制

小结:这两类系统的定位目标,并不是绝对冲突矛盾的,并且从目前定时类调度系统的发展来看,也需要处理一些复杂的作业间强依赖关系了,比如"微批(少量DAG批量作业处理)"概念的提出。

只不过,要同时圆满的支持这两大类需求,从实现的角度来说是很困难的,因为侧重点的不同,

在架构上多少会对某些方面做些取舍,当前这两类系统都没有能够做到完美的两者兼顾。

为什么需要调度系统

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

多个任务单元之间往往有着强依赖关系,上游任务执行并成功,下游任务才可以执行。比如上游

任务结束后拿到 A 结果,下游任务需结合 A 结果才能产出 B 结果,因此下游任务的开始一定是

在上游任务成功运行拿到结果之后才可以开始。

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

执行的起止时间,通过定时跑任务的方式,让整个系统保持稳定的运行。

一个完整的数据分析任务最少执行一次,在数据量较少,依赖关系较为简单的低频数据处理过程中,这种调度方式完全可以满足需求。

然而在企业级场景中,更多的是需要每天执行,如果任务数量较多,在任务启动的时间计算上就

将耗费大量时间,另外如果出现上游任务执行时长超出原定预计时间或者运行异常的问题,上述

的处理方式将完全无法应对,也会对人力物力造成重复损耗,因此,对于企业数据开发过程来说,一个完整且高效的工作流调度系统将起到至关重要的作用。

写在最后

TASKCTL目前是暂时唯一提出"无序定时和有序DAG作业流"完整概念的调度产品。既可以在定时中处理"微笑"的控制,也能够在DAG作业流中处理"定时" 的控制。

例如:

?在大数据分布式(分片)计算中,对数据进行实时ETL跑批处理,

?在ETL作业跑批中,对某个作业或一段分支进行时间窗口内循环定时处理

随着大数据应用需求的不断膨胀,数据处理的复杂度和实时性要求越来越高。TASKCTL作为国

内自主研发的专业调度产品,为企业进入大数据2.0时代做好提前布局。

详情可以百度搜索"taskctl"了解产品参数

批量调度统一建设目标与意义

批量调度统一平台的两大建设目标

批量调度技术像任何基础技术平台、中间件技术平台一样,首先基于流程化、自动化的作业调度

技术问题,其次是对该技术应用、管理以及技术应用的监控问题。我们对批量调度统一平台的建

设目标也是以这两个问题的确立的,分别是批量调度技术统一工具平台,其次是批量调度统一监

控管理平台。

●目标一:批量调度统一技术工具平台:技术工具平台主要为各个系统提供批量调度流程化、自

动化的调度技术服务。其主要使用用户为系统实施、改造的技术人员。在项目实施过程当中,通

过专业的技术平台,使技术人员更快捷、更专业、更灵活、更规范地完成各个系统具体批量作业

调度需求。

●目标二:批量调度统一监控管理平台:监控管理平台主要为系统运维管理人员提供平台化服务。通过统一视图、统一监控、统一预警以及更多的分析管理功能,使运维人员可以快捷、高效地完

成对各个系统批量处理的维护、监控、管理等工作,可以更为有效地确保全行批量后台的整体运行。

●两者关系:技术工具平台偏向技术应用,监控管理平台偏向管理应用。监控管理平台是技术平

台的更高层次的应用延展,也是整个批量处理的更高层次的应用诉求;而技术平台的专业化、统

一化,是统一监控平台得以实现的基础。

两者关系:技术工具平台偏向技术应用,监控管理平台偏向管理应用。监控管理平台是技术平台

的更高层次的应用延展,也是整个批量处理的更高层次的应用诉求;而技术平台的专业化、统一化,是统一监控平台得以实现的基础。

两大目标的具体意义与价值

总的意义与价值:进一步完善银行后台IT技术基础设施,为未来更多的IT建设与应用创新奠定

坚实的基础。

批量调度技术统一工具平台意义

建立一款具有统一技术与规范的调度技术工具平台,对银行整体统一批量调度建设,具有以下五

点意义:

(一)建立专业统一的批量作业调度技术平台,是建立批量作业调度统一监控的基础。

由于技术原因、历史原因,目前银行批量调度技术缺乏一定的规范与标准,很难提供统一接口,

并在此基础上建立一个统一监控平台。只有一个专业、完善、统一的技术平台,才可以建立一个

完善的统一监控平台。

(二)建立专业统一的批量作业调度技术平台,为企业建立批量后台统一驱动中枢

数据是企业的资产,批量系统是整合数据的重要支撑,而调度则是批量的灵魂,企业所有的批量

整合数据都靠调度来驱动。建立一套统一、专业且功能完善的技术平台,可以为银行70%的数据

运行的安全性、可靠性提供更高的技术保障。

(三)建立专业统一的批量作业调度技术平台,提升各个应用系统的实施效率

银行诸多系统的升级、改造、重构以及新建,都离不开批量调度的建设与应用。一套具有统一规范、功能完整、安全可靠的批量调度技术平台,不仅可以减少项目实施的工作量,提升各个应用

系统的实施效率,还可以大幅度提高各个系统批量处理的实施质量。

(四)建立专业统一的批量作业调度技术平台,提升企业整个后台批量处理效率

银行后台批量整体效率,直接决定银行对客户服务效率与质量。而银行大部分批量处理都存在上

下游关系,由于目前缺乏统一专业的调度技术,很难统一协调上下游批量处理关系,从而造成了

一定批量时间窗口浪费。建立一套具备灵活的系统间触发机制的统一调度技术平台,可以有效编

排不同系统批量处理的时间窗口,并大幅度提升银行后台整体批量调度效率。

(五)建立专业统一的批量作业调度技术平台,减少人工操作,提高生产力,保障数据运行安全

由于缺乏一个专业易用的调度技术平台,目前银行很多系统调度都采用人工操作,这不仅浪费人力,同时,因人为操作因误操作、漏操作,均带来一定的潜在风险。建立一套以自动化技术为核

心的批量作业调度技术平台,不仅减少人工操作,提高生产力,还降低大量的人为风险,进一步

保障数据运行安全。

批量调度统一监控管理平台意义

在各系统统一批量调度技术工具平台基础上,建立银行批量调度统一监控运维管理平台,对银行

整体统一批量调度建设,具有以下三点意义:

(一)建立统一的批量作业调度监控管理平台,是银行后台综合统一运维管理平台不可或缺的重

要一环

为保障银行庞大的IT设施环境运行,从各个纬度建立一个统一的监控体系,建立一个完善统一的监控运维平台,是银行IT发展的必然趋势,而其中对批量调度的统一监控,可以说是最为重要的一环。数据作为银行的核心资产,其中70%以上是通过批量调度运行得到,为了保障银行70%的

数据运行稳定与安全,建立一套行之有效的统一批量调度监控平台,是非常有必要的。

(二)建立统一的批量作业调度监控管理平台,提升运维管理效率,降低运维管理风险。

企业后台运维,很大一部分工作是与批量相关、与批量调度相关。将分散到各个系统的运维管理

应用,集中到一个统一平台,进行统一展示、统一监控并提供统一的操作运维窗口,不仅可以成

倍提高运维管理效率,还可以加快问题处理响应速度,从而降低运维管理风险。

(三)建立统一的批量作业调度监控管理平台,增强批量作业调度情况的可分析能力。

通过统一的批量作业调度监控管理平台的建设,可以将企业各系统的批量调度处理相关数据信息,完整地集中到一个统一平台,为开展各种调度以及作业处理的分析,奠定坚实的技术基础。

相关主题
相关文档
最新文档