首页 > 其他分享 >分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

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

时间:2023-08-17 10:13:01浏览次数:48  
标签:DAG Taier 任务 实例 提交 dtstack 任务调度 com

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,时间可以自己调整。

file

Taier 任务提交

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

file

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

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

file

Taier 结构分析

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

file

Taier worker-plugin

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

· 任务资源判断

· 任务提交

· 任务状态获取

· 任务日志获取

· Kill 任务

具体代码如下:

file
file

相关的类包括:

· 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 列表

· 获取表元数据

· 下载数据

· 下载日志

具体代码如下:

file
file
file
file

Taier 任务提交插件

参考代码:

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

file

Taier 可扩展点

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

· 任务立即生成实例

· ChunJun 向导模式扩展

· DataX 支持向导模式配置

· 数据源插件版本扩展

· 计算引擎新增

· Hadoop 多集群版本支持

· 实例分发策略增加

视频课程&PPT获取

视频课程:

https://www.bilibili.com/video/BV1wP411z7rf/?spm_id_from=333.999.0.0

课件获取:

https://www.dtstack.com/resources/1047

《数栈产品白皮书》:https://www.dtstack.com/resources/1004?src=szsm

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001?src=szsm

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

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

标签:DAG,Taier,任务,实例,提交,dtstack,任务调度,com
From: https://www.cnblogs.com/DTinsight/p/17636857.html

相关文章

  • Koordinator 异构资源/任务调度实践
    作者:李涛(吕风)前言Koordinator是阿里云基于过去我们建设的统一调度系统中积累的技术和实践经验,对外开源了新一代的调度系统。Koordinator支持Kubernetes上多种工作负载的混部调度。它的目标是提高工作负载的运行时效率和可靠性(包括延迟敏感型负载和批处理任务)。Koordinator不仅......
  • 19.任务调度之xxl-job原理
    课程目标1、掌握xxl-job的部署、开发方法2、掌握xxl-job的特性和架构设计3、掌握xxl-job的运行原理内容定位适合已经掌握Quartz的同学学习。Quartz这节课是大家必须去看的,因为E-job的底层就是Quartz,xxljob最开始也是用Quartz实现的。1.xxl-job基本介绍1.1.Quartz体系......
  • Go的任务调度单元与并发编程
    摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。前言本文主要介绍Go语言、进程、线程、协程的出现背景原因以及Go语言如何解决协程的问题和并发编程的实现,本文的阅读时长约在15-20分钟......
  • Airflow 2.2.6 + MySQL 8.0.27 + Redis 7.0.12 部署Airflow任务调度平台
    本docker-compose文件在centos7.9系统,docker版本为24.0.2上测试的如果你的docker版本低于24.xxx就需要手动安装docker-compose,高于24就不需要安装了,docker已经自带了官方文档,关于docker部署1.先执行mkdir-p./dags./logs./plugins./config./......
  • 力扣-任务调度器
    1.问题描述给定一个用字符数组表示的CPU需要执行的任务列表。其中包含使用大写的A-Z字母表示的26种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在1个单位时间内执行完。CPU在任何一个单位时间内都可以执行一个任务,或者在待命状态。然而,两个相同种类的......
  • 从 Component Tree 视角看 Dagger 到 Hilt 的演变
    1.从Dagger的本质说起一言以蔽之,Dagger的本质就是一棵ComponentTree(组件树)。1.1Component:依赖注入容器component是Dagger中的核心概念,我们通过@Component注解定义并生成代码。component作为依赖注入容器,身兼工厂、仓库、物流三种角色于一身。Dagger中的很多重要......
  • Quartz任务调度快速入门
    了解Quartz体系结构Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述:●Job:是一个接口,只有一个方法voidexecute(JobExecutionContextcontext),开发者实现该接口定义运行任务,JobExe......
  • 任务调度占位符说明
    摘要介绍任务调度占位符的格式,例如*/1****一、任务调度占位符说明五个占位符的说明符号含义范围第一个"*"一小时当中的第几分钟0-59第二个"*"一天当中的第几小时0-23第三个"*"一天当中的第几天1-31第四个"*"一年当中的第几月1-12第五......
  • linux crond任务调度
    摘要介绍linux的任务调度机制介绍任务调度指令crontab举例crontab进行任务调度的例子一、linux任务调度任务调度:是指系统在某个时间执行的特定的命令或程序。任务调度分类:系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等个别用户工作:个别用户可能希望执行某......
  • 使用 Apache DolphinScheduler 进行 EMR 任务调度
    ByAWSTeam前言随着企业规模的扩大,业务数据的激增,我们会使用Hadoop/Spark框架来处理大量数据的ETL/聚合分析作业,⽽这些作业将需要由统一的作业调度平台去定时调度。在AmazonEMR中,可以使用AWS提供StepFunction,托管AirFlow,以及ApacheOozie或Azkaban进行作业的......