博客 分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

   数栈君   发表于 2023-08-18 14:26  553  0

Taier 作为袋鼠云的开源项目之一,是一个分布式可视化的 DAG 任务调度系统。旨在降低 ETL 开发成本,提高大数据平台稳定性,让大数据开发人员可以在 Taier 直接进行业务逻辑的开发,而不用关心任务错综复杂的依赖关系与底层的大数据平台的架构实现,将工作的重心更多地聚焦在业务之中。


本文将从 Taier 的流程简述、结构分析以及可扩展点三个方面对 Taier 的整体流程进行分析探讨。


Taier 流程简述


Taier 主从划分

Taier 是一个单独的应用,进程无主从划分,多实例运行时通过 ZK 实现主从划分。基于 LeaderLatch 进行实现,启动时抢到锁的节点即为主(Master),没有抢到锁的即为从( Worker),会出现一主多从的情况。


如果其他的 Worker 在 ZK 中监听到 Master 已经挂掉,那么 Worker 会再次进行锁的争夺,抢到锁的成为主。


在 Taier 中,作为主的主要职责包括周期实例生成、实例预分发、Worker 节点任务容灾、实例提交等,作为从则主要负责实例提交即可。


Taier 周期实例(T+1)

周期实例是 Taier 的专属名词,指的是任务按照配置的调度时间运行一次即为一个实例,现在周期实例的机制为 T+1 的方式。


今日会预生成明天所有任务对应的周期实例,即今日的周期实例由昨天生成。Taier 默认22:00生成第二天周期实例,如果在22:00之后再将任务提交到调度系统,这个任务则不会进行周期实例生成的动作。


配置项为 job.graph.build.cron=22:00:00,时间可以自己调整。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/2e4d0cbcd928a51a21d0716ceed86d12..png


Taier 任务提交

Taier 任务提交的具体流程图如下:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/8a9755cfecc00a78cf5acf056004a025..png


任务流程提交前置判断主要分为两个部分,一为任务上下游的依赖校验,会判断周期实例的上游是否已经运行完成,如果上游运行失败,那么这个任务就是不准备提交的;二为资源校验,因为任务都是运行在集群上,非常占资源,所以会进行提交前的校验,判断当前集群的资源是否充足,如果资源不足,会进行延迟提交的动作。


Taier 任务提交的具体代码如下:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/04d353f8c5f5ddc91cd267e29d8f8027..png


Taier 结构分析


Taier 的结构主要分为 UI、应用层和插件三个部分,在插件中,Taier worker-plugin 和 Taier datasource-plugin 又是其中最为重要的两个插件。

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/2b21e5f41aa8cedb586a9ae908dbfbb4..png


Taier worker-plugin

Taier worker-plugin 的主要用途包括:

· 任务资源判断

· 任务提交

· 任务状态获取

· 任务日志获取

· Kill 任务


具体代码如下:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/9f88085cff5ac6ba182f17730742f77b..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/949f258c5664b80fa3024ac206e714d8..png


相关的类包括:

· com.dtstack.taier.common.client.ClientFactory

· com.dtstack.taier.common.client.ClientProxy

· com.dtstack.taier.common.client.ClientCache


Taier datasource-plugin

Taier datasource-plugin 的主要用途包括:

· 连通性检查

· 执行 SQL

· 获取 Schema 信息

· 获取 Table 列表

· 获取表元数据

· 下载数据

· 下载日志


具体代码如下:

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/b28049f280bf3093f9406b65549ddfe1..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/a3289f6bfb25b5089a78c0ee649b33dd..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/4306ee0468d73406e9b9521362d1ec12..png

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/eb281db37bd0e4e20d5d0d50cadafde3..png


Taier 任务提交插件

参考代码:

com.dtstack.taier.scheduler.jobdealer.JobSubmitDealer#submitJob

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/f32945e3cf486e260e8b270184ae5aa4..png


Taier 可扩展点


Taier 目前就核心功能进行了开源,其他功能开发者可以自行进行扩展,包括:

· 任务立即生成实例

· ChunJun 向导模式扩展

·  DataX 支持向导模式配置

· 数据源插件版本扩展

· 计算引擎新增

· Hadoop 多集群版本支持

· 实例分发策略增加


  视频课程&PPT获取  




《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack  

0条评论
上一篇:api接口数据加密
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群