致敬即将逝去的 Teradata Automation!

Teradata在诞生之初就和其它数据仓库(OracleDB2不同,它采用的架构不是常见的ETL架构,而是后来在大数据领域中津津乐道的ELT模式,也就是它整体解决方案不用采用InformaticaDataStageTalend来从数据源做抽取转换动作,而是更多的使用将源系统变为接口文件,然后通过FastLoadMultiloadTPumpParallelTransporter(TPT)进入到数据仓库准备层当中这部分替代工具感兴趣的可以参考ApacheSeaTunnel开源版或者白鲸开源商业版WhaleTunnel,然后通过BTEQ执行TeradataSQL脚本,将所有的脚本根据任务之间的触发和依赖DAG,有效地执行起来


2023年2月15日,Teradata经历了26年发展之后正式退出中国,作为同为数据专业公司的白鲸开源的小编也唏嘘不已,小编也是Teradata的粉丝,经常看Teradata各个产品线的发展。大家都在考虑Teradata数据仓库何去何从时,其实都忽略了Teradata公司其实还有一大法宝,那就是它随Teradata数据仓库一起的数据仓库调度套件Teradata Automation。


Teradata在全球特别是在大中国的快速发展,离不开Teradata Automation一起的助攻。今天,我们就在此缅怀一下Teradata Automation的历史,以及对未来的展望,也希望从诞生之日起就致敬Automation的DolphinSchedulerWhaleScheduler可以接下衣钵,继续造福下一代调度中人。


Teradata Automation的架构演变

图片


Teradata在诞生之初就和其它数据仓库(Oracle,DB2)不同,它采用的架构不是常见的ETL架构,而是后来在大数据领域中津津乐道的ELT模式,也就是它整体解决方案不用采用Informatica/DataStage/Talend来从数据源做抽取转换动作,而是更多的使用将源系统变为接口文件,然后通过FastLoad/Multiload/TPump/Parallel Transporter (TPT) 进入到数据仓库准备层当中(这部分替代工具感兴趣的可以参考Apache SeaTunnel开源版或者白鲸开源商业版WhaleTunnel),然后通过BTEQ执行TeradataSQL脚本,将所有的脚本根据任务之间的触发和依赖(DAG),有效地执行起来。


Teradata Automation的这个架构听上去是不是很熟悉?是的,后来的大数据领域里的Oozie,Azkaban,airflow都是这个逻辑架构,相对于199x年研发的Teradata Automation,Oozie、Azkaban、Airflow全都是弟弟!


尽管年代比较就远了,但是作为ELT调度工具的鼻祖和当年在企业行业里使用场景最多的ELT调度工具,Automation在业务场景考虑的全面性上是非常有优势的。所以,Apache DolphinScheduler在业务场景侧的设计,包括现在商业版WhaleScheduler很多功能设计上依然能看到向Teradata Automation致敬的影子,只不过Teradata Automation是任务级别调度控制,而DolphinScheduler和WhaleScheduler是工作流+任务级别调度,这个设计就是致敬另一个的全球ETL调度前辈Informatica(小编后续再讲它的故事)。


初版Automation是由Teradata台湾员工Jet Wu使用Perl编写,以轻量、结构简单、系统稳定著称,而且利用flag文件等避免了Teradata的OLTP较低的性能,快速的在Teradata全球项目中流行起来。后来又经过中国区的Teradata王永富等大神修改进一步提升可用性,在大中华地区Automation的目录都是如下这个样子的:

    /ETL (Automation 主目录)

    |---/APP   存放ETL任务脚本。在此目录下先建子系统目录,然后建ETL任务目录

    |---/DATA 

    |------/complete 存放已成功执行过的数据. 以系统名称以及日期来建立子目录

    |------/fail 

    |---------/bypass 存放不须执行的档案.以系统名称以及日期来建立子目录 

    |---------/corrupt 存放大小不符合的档案. 以系统名称以及日期来建立子目录

    |---------/duplicate 存放重复接收的档案. 以系统名称以及日期来建立子目录

    |---------/error 存放执行作业过程中产生错误的档案. 以系统名称以及日期来建立子目录 

    |---------/unknown 存放未定义在 ETL Automation 机制中的档案. 以日期来建立子目录 

    |------/message 存放要发送讯息通知的控制文件 

    |------/process 存放正在执行中的作业所使用的数据文件及控制档 

    |------/queue 存放准备要执行的作业所使用的数据文件及控制档 

    |------/receive 用来接收各来源系统所传送来的数据文件及控制文件 

    |---/LOG 存放 ETL Automation 系统程序及各作业在执行时所产生的记录档案 

    |---/bin 存放 ETL Automation 系统程序的执行文件 

    |---/etc 存放 ETL Automation 机制的一些设定档案 

    |---/lock 存放 ETL Automation 系统程序及各作业在执行时所产生的 lock 档案 

    |---/tmp 临时缓冲目录,存放临时文件


开始时候,界面是这样的:

2_20230313_144956786


这个版本Automation经过了10数年久经不衰,后来因为任务量越来越多,老版本依赖文件+Teradata元数据存储的Automation明显性能不足,运营态管理也颇为复杂,于是在中国又更新了一个版本的Automation,将任务加入参数放入到内存当中,并做了预加载从而快速提高任务并行度,降低数据延迟,而且加入了复杂的运行态管理,很多金融系统的Teradata Automation一直延续至今。


向Teradata Automation致敬!

图片


而Apache DolphinScheduler在开源之初开源社区就是融合了当时所有调度系统理念,很多功能致敬了Teradata Automation,例如,跨项目工作流/任务依赖任务(Dependent),这和Teradata Automation的依赖设定如出一辙,而当时的Airflow,Azkaban,Oozie都没有这样的功能。Apache DolphinScheduler更是凭借其优异的性能、卓越的UI与功能设计,让Teradata Automation中国核心开发者之一的王永富大佬将自己公司的调度主导从Teradata Automation任务都迁移到Apache DolphinScheduler,并大大的点了个赞。当时,社区的小伙伴真是兴奋不已,能得到永富大佬的认可,证明DolphinScheduler已经进入全球领先水平了,成为Apache顶级项目才会名副其实。


而现在的白鲸开源,是一个互联网公司+Informatica+IBM+Teradata混合成员组成的公司,Teradata死忠粉又有很多,于是大胆地把Automation的一些理念自然而然的放到了WhaleScheduler当中,这些功能Teradata Automation用户看了熟悉,外部用户看了一拍大腿说创意真好的设计,其实都只能说WhaleScheduler站在了巨人肩膀上:


  • 依赖/触发 分布式内存引擎设计

  • Trigger机制(除了文件Trigger,还加入Kafka,SQL检测Trigger)

  • 运行态-加权(TD黑话-专政模式,懂的都懂,主要面对数据晚到,但监管层报表优先保证的场景)

  • 运行态-隔离(TD黑话-抗疫模式,致敬某位大咖,主要面对数据出现脏数据,避免继续污染下游任务的功能)

  • 黑名单

  • 白名单

  • 预热机制等


WhaleScheduler更是吸取了Teradata Automation Excel导入导出功能,让业务部门针对复杂的任务可以不通过界面配置,而通过Excel表格就可以非常方便地维护复杂的DAG,其实这些都是向Teradata Automation致敬。没有Automation 前人在业务场景上不断创新、探索,没有一代一代的Teradata前辈前赴后继打造数据仓库规范,哪有我辈能把凭空打造出全球卓越的开源社区和商业产品。


Teradata虽然退出中国了,但它创新的技术架构以及Teradata专业人才的精神一直激励着我们的这些后辈不断进取。Teradata Automation虽然不能为大家服务了,白鲸开源的TD粉儿们也衷心的希望,我们集互联网云原生调度+传统调度经验于一身的WhaleScheduler,可以承接Teradata Automation的衣钵,持续为各位贡献我们自己的力量。


同时我们也希望,白鲸开源的WhaleScheduler也能携Apache DolphinScheduler给后代构建调度系统的同仁们,开辟更加创新的道路!


最后,谨以此文,致敬Teradata Automation以及孜孜不倦在调度系统上耕耘的用户和从业者!