数据中台 数据中台

tel 400-002-1024
tel

袋鼠云技术荟 | 数据开发枢纽:分布式任务调度引擎DAGScheduleX

2020年6月19日 袋鼠云 文章来源:袋鼠云.
袋鼠云技术荟 | 数据开发枢纽:分布式任务调度引擎DAGScheduleX

因为大数据生态的复杂性,对于大数据开发人员来说,要深入其原理并形成体系发挥作用需要花费很多时间,而他们更多的是要聚焦在业务层面进行数据处理。而对于企业来说,要构建一个成熟稳定、功能多样的大数据平台需要花费很多的时间与人力成本。

今天我们就来说说,数据工程师在使用数栈平台时,DAGScheduleX 调度引擎是如何承载数栈开发套件,帮助工程师更加快速地实现开发任务的。

什么是DAGScheduleX

调度引擎:对Task(任务)生成Job(实例)并对Job进行统一调度管理,并提供Job实例基于多个集群不同版本(Hadoop2、Hadoop3、CDH、HDP)多种不同计算引擎的任务调度。

袋鼠云数栈平台有七大开发套件:离线开发、实时开发、算法开发、标签引擎、数据共享服务、数据质量、数据资产,大数据开发人员可以在套件中直接进行业务逻辑的开发,而不用关心底层的大数据平台的架构与实现,将工作的重心更多地聚焦在业务之中。套件中所开发的Task(任务)会对应生成一个可执行的Job(实例),而所有Job(实例)的执行都依赖于DAGScheduleX(调度引擎的简称)。

袋鼠云技术荟 | 数据开发枢纽:分布式任务调度引擎DAGScheduleX

DAGScheduleX的部署策略

DAGScheduleX在部署策略上有多种选择方案,以满足项目实施时的环境要求:

  • 可以区分为Master/Worker角色,Master代表调度、Worker代表执行引擎。Worker部署在计算节点会更加轻量。
  • 也可以进行单进程整合部署,部署模式更加简单。

以上两种部署方式都支持多节点部署。

袋鼠云技术荟 | 数据开发枢纽:分布式任务调度引擎DAGScheduleX

DAGScheduleX 之调度(Master)

1) 解析DAG有向无环图

大数据开发人员基于开发套件开发的Task(任务)可以是一个独立的Task(任务),也可以是一个复杂的工作流Task(任务)。可以对Task(任务)进行调度依赖的配置,将任务与任务之间生成一个DAG有向无环图。最后根据调度周期,会将任务的DAG有向无环图进行解析生成对应的Job实例。

袋鼠云技术荟 | 数据开发枢纽:分布式任务调度引擎DAGScheduleX

2) 调度的主要职责

调度(Master)实现了对Job(实例)的统一管理,会根据Job的优先级进行高并发调度,并对Job的运行情况进行监控。调度(Master)支持高可用(HA)部署,对异常宕机后Job(实例)运行情况的数据进行恢复,并保证多节点部署时的数据一致性。最后,调度(Master)提供了丰富的Rest Api接口,满足数栈体系的七大套件的功能要求:

  • 解析Task的DAG生成Job
  • 调度Job(依赖关系、优先级、运行状况)
  • 故障容灾恢复
  • Worker 健康检查
  • 提供丰富的Rest Api支持

袋鼠云技术荟 | 数据开发枢纽:分布式任务调度引擎DAGScheduleX

DAGScheduleX 之执行引擎(Worker)

袋鼠云技术荟 | 数据开发枢纽:分布式任务调度引擎DAGScheduleX

1) 自定义Classloader 结合 SPI 实现计算组件插件化管理

DAGScheduleX目前支持多种计算组件,如Flink、Spark、tersorflow、python、shell 、Hadoop MR、Kylin、Odps、RDBS(多种关系型数据库)等等。不同的计算组件之间通过自定义的Classloader进行隔离加载,并根据 Java SPI 确定具体的计算组件类型,以此解决不同计算组件之间的程序冲突问题:

自定义 Classloader 以 Child-First 方式加载插件

在classpath下的 META-INF/services/ 目录下以 SPI 方式描述插件对应的计算组件

2) Console 统一管理多个集群的不同版本

Job(实例)在执行引擎处理前,会通过 Console 获取到一段 pluginInfo 信息。在 pluginInfo 中会对某一具体的集群信息进行描述,如果存在2个集群环境:Cluster A,Cluster B,Job(实例)需要提交到Cluster A中执行时,pluginInfo 中就对应了 Cluster A 集群的相关配置信息,并以此配置信息初始化(Cluster A)相关组件对集群进行操作。

3) 提供远程调用服务

Worker可下发到计算节点进行部署,并提供远程调用服务支持Master 与 Worker 之间的通信。通信服务包括并不局限于以下方式:

获取插件中的默认配置信息

  • Job(实例)的submit(提交)接口
  • Job(实例)的cancel(取消)接口
  • Job(实例)的status(运行状态)接口
  • Job(实例)的log(运行日志)接口

DAGScheduleX是基于任务DAG构建实例、实例调度、实例多引擎提交为一体的分布式任务调度引擎。数栈的离线计算、流计算、算法开发等所有的套件都依赖于调度引擎来执行任务,是很重要的枢纽。