调度系统 | ETL Automation
The following article is from 匠心独运维妙维效 Author 陈栋
浅谈 ETL
Automation
1.0 引言数据仓库每日通过成千上万的ETL批量任务按特定的业务逻辑抽取、加载、转换处理海量数据。数仓中的批量任务按调度方式可分为依赖关系触发、入仓源文件触发、定时触发、手工调度触发等。在任务调度的同时,调度工具还需要兼顾任务优先级,系统并发任务数限制,任务暂停,任务跳过等多维度因素,如何精确并高效地进行任务调度呢?
ETL Automation是一款适用于数据仓库ETL任务调度的软件工具。从2001年V2.5采用C/S架构根据Perl开发的初始版本后,经历过2004年V3采用C++重写调度引擎,2010年的V4采用JAVA优化调度引擎的迭代后,目前已演化至采用B/S架构的V5版本,重新设计了调度模型,丰富了任务组、并发组等调度功能,并优化了交互UI。
除调度功能外,ETL Automation V5版本采取全新的框架,优化了WEB端界面,为运维人员提供了方便快捷的检测及分析环境。如下图所示,运维人员可从前端WEB页面直观地观察到正在运行、等待以及报错任务的任务名、运行时间,并可通过前端界面终止、跳过或手动调起任务。通过调度历史,管理员还可轻松查询到任务历史运行信息、执行日志、任务依赖信息等。
图1:Automation前端界面展示
图2:Automation前端界面展示
图3:ETL Automation 逻辑架构示意图
如上图所示,ETL Automation由Master、知识库、Agent等模块组成。
Master是Automation的核心模块,负责任务的整体调度及管理,对外以Sokect形式提供服务。
ETL知识库模块保存着ETL Automation的所有配置、运行日志、系统资源等数据,包含ETL任务历史,任务实例信息,任务依赖关系,运行配置参数等。知识库可适配多种关系型数据库。
Agent负责接收Master的控制与任务指派,接收被分配的任务实例,并通过插件实现ETL任务的运行。此外,Agent会监控任务实例并反馈实例的执行状态至Master。
Agent中的File_Monitor进程监控文件接收目录,将控制文件按识别结果放至对应的路径下,并将监控信息反馈至Master。Master根据控制文件产生对应的任务实例。
/receive/ 文件监控目录,存储收到的文件
/queue/ 等待处理的文件存放目录
/process/ 正在处理的文件存放目录
/done/ 成功执行的文件存放目录
/duplicate/ 重复的文件存放目录
/unknow/ 未识别的文件存放目录
/failed/ 错误或处理失败的文件存放目录
3.2.2 依赖关系触发
当任务的依赖任务完成时,调度引擎将产生该任务的实例。
3.2.3 时钟触发
当系统运行时钟到达任务定义的触发时点时,任务的实例将被创建。
当监听进程检测到控制文件、任务依赖的任务完成或者系统时钟到达定义的时刻时,调度引擎将生成任务的实例。Master在检查任务的全部依赖完成、调度日历满足、任务定义的时间满足、同步组连续性通过、并发限制满足、且有可以派发的Agent后,任务实例会被发送至指定Agent。
批量任务拉起后,Agent会将任务的执行信息向Master反馈。在任务调度的过程中,管理员可以通过ETL系统管理的监控功能与控制台的实例控制命令对任务的调度进行干预。
3.3 同步组
同步组是控制数仓任务执行日期翻牌的唯一机制,当某个同步组下的全部任务完成或跳过后,系统将生成下一自然日的同步组实例,同步组内新数据日期的任务方可执行。Automation支持多个同步组并行,同步组之间可独立翻牌,互不影响。
3.4 并发组并发组控制着数仓内一组任务的最大并行数。管理员可结合数仓整体性能根据需要设置多个并发组并配置并发参数,精细化地调配系统资源消耗,优化互斥任务的调度。
4.1 整合多元化平台
在G行多元化的基础数据平台中,Teradata,GreenPlum,GaussDB共同负载着约数万个ETL任务。如下图所示,借助着统一的知识库,ETL Automation整合了多个平台的批量任务信息,由Master统一管理调度。
图3:整合TD,GP,GS的ETL Automation
4.2 专场模式ETL AutomationV5.1中的专场功能为管理员提供了针对任务时效性要求的解决方案。对于监管报送、重要报表等及时性要求较高的批量任务,当管理员需提前任务的完成时间时,可在输入任务名称后开启专场模式,Automation将梳理出该任务的上游路径的任务,在数仓中仅允许这些任务运行,非目标任务路径的批量任务将在专场模式结束前持续等待。数仓中的全部计算资源将分配至专场路径任务中,以加速相关批量的完成。
4.3 抗疫模式我们的数据仓库也需要抗疫吗?它也要和我们一样戴口罩吗?
不要紧张,Automation中可没有病毒。Automation抗疫模式于2020年上线,旨在屏蔽受上游异常或错误“瘟疫”数据的影响。当数仓源系统供数或上游任务存在错误数据时,管理员常陷入一种两难的局面,是暂停所有批量任务,梳理分析出受该任务影响的下游任务后分别跳过,还是按正常的触发依赖关系调度下游的批量任务,待上游数据修正后再重跑受影响任务呢?在相关错误数据影响梳理分析完成前,停批会影响数仓整体的批量进度,而若按正常触发依赖关系调度,受错误数据影响的下游任务不但会徒劳消耗系统资源,重跑相关任务也会在后期占据巨大的时间窗口。抗疫模式为该问题提出了有效的处置方法。借助该功能,管理员可通过Automation梳理出起始任务的所有下游,并暂停这些任务的调度。待上游数据修正后,管理员可通过WEB界面拉起被暂停的批量任务。在此同时,不受“瘟疫”数据影响的任务可照常运行。
5.0 总结因数据仓库中批量任务的复杂性,ETL Automation作为数仓批量任务的调度工具有着不可替代的地位,并借助着其广泛适配性统一管理G行多元基础数据平台Teradata、GreenPlum及GaussDB中的批量任务。科技人员将继续结合应用业务发展及运维管理需要,进一步对Automation 迭代优化,以更好地适配G行数仓的数据需求,助力G行的科技金融战略。
往期推荐
扩展阅读:公众号后台回复“kettle”,转发即可下载资料。