大数据调度平台研报总结
01. 系统简介
系统为一站式分布式全周期大数据调度平台,支持文本、RDBMS、HDFS、实时、离线等多种数据源,涵盖数据采集、分析、提取、出库、报表生成等全流程。典型应用场景包括数据库、文件、消息等数据源管理,以及小马BI用户DB、NoSql、第三方平台等对接。
02. 运营情况
系统面临第一代调度架构的挑战,包括扩展性不足、高可用性瓶颈、高吞吐量限制、灵活性差等问题。具体表现为:
- 体量大:每天百万级任务,千万级实例,单库3亿+历史实例
- 时效要求高:短周期任务多,时间敏感度高
- 波峰效应:高峰期瞬时实例剧增
03. 系统设计
3.1 第一代调度架构问题
- 任务实例化性能低下,分钟级任务调度支持度低,任务延迟严重
- 应用负载高:调度内核负载水平,扩展困难
- 存储负载高:单机性能瓶颈,DB高负载
- 程序性能差:事务太大回滚,任务大批量延迟
3.2 新一代调度系统架构
3.2.1 存储可伸缩
- 数据分片:单机MySQL切换为Tbase(分布式数据库)
- 冷热分离:数据冷热分离,冷数据采用HBase存储
3.2.2 应用水平伸缩
- 任务分片:水平伸缩对任务切片,调度核心负责对应切片
- 实例分桶:将实例Hash分桶,转为mini-batch
- 时效保证:每个桶可以自定义缓冲时间
- 微批提交:桶满或桶超时提交mini-batch
3.2.3 任务实例生成解决方案
- 将大量离散请求转为mini-batch请求(专利:基于Hash桶的离散处理转微批处理)
- 任务实例生成流程:获取切片策略 → 对应任务切片 → 展开BaseMaster
3.3 任务下发
3.3.1 问题分析
- 系统风险:报表延迟、服务宕机
- 挑战:
- 任务量大:千万级任务下发
- 时效敏感:用户对数据时效性要求高
- 资源有限:调度&计算资源有限
- 依赖繁杂:调度底层依赖计算、存储、权限、业务侧LOAP
3.3.2 方案选择
- 目标:动态优先级、动态并发控制
- 方案比较:
- FCFS(First Come First Served):O(1)优点是排队公平,缺点是短作业不友好
- SJF(Short Job First):O(N)优点是最短平均等待,缺点是长作业不友好,饥饿
- RFS(Resource Fair Scheduler):O(logN)动态优先级、动态资源并发控制
- 采用方案三带来的问题:
- 如何计算动态优先级
- 什么是资源?如何做资源并发控制
3.3.3 动态优先级
- 遵循原则:任务的紧迫性、关键性、频繁性、周期的快捷性、依赖的传递性
- 优先级要素:
- 延迟时间(紧迫性):延迟越久,优先级越高
- 静态优先级(关键性):业务关键任务
- 周期(频繁性):分钟>小时>天>周>月
- 任务类型(快捷性):check > sync > calculating
- 链路(传递性):下游任务链路深度
3.3.4 资源并发控制
- 挑战:
- 场景多样:服务类型多,方案统一难
- 资源实时性:随着资源消耗,实时动态计算
- 方案:
- 抽象:按领域模型服务高度抽象,一切皆是资源
- Cluster:Hive集群、HDFS集群等
- Executor:执行机(物理机、容器)
- Queue:Yarn资源队列
- Service:MySQL、Redis、Oracle等
- 资源接口:已用配额、最小配额、最大配额
- 资源配额:根据服务资源情况量化为配额
- 任务配额:任务执行历史评估任务占用配额
3.3.5 任务下发解决方案-资源公平调度
- 核心思想:从百万级任务中获取满足资源并发控制的最高优先级任务
- 流程:
- 分片加载:调度内核加载对应分片的待执行任务
- 分桶:待执行任务Hash分桶
- 桶内排序:每个桶按动态优先级排序
- 桶内并发控制:桶内按动态优先级从高到低遍历,判断资源并发控制,直到有一个任务满足并发控制
- 桶外排序:对每个桶满足并发控制的高优先级任务排序获取优先级最高任务
- 时间复杂度:O(logN)