【分布式理论17】分布式调度3:分布式架构-从中央式调度到共享状态调度
文章目录
- 一、中央式调度器
- 1. 核心思想
- 2. 工作流程
- 3. 优缺点
- 4. **典型案例:Google Borg**
- 二、两级调度器
- 1. **核心思想**
- 2. **工作流程**
- 3. 优缺点
- 4. **典型案例:Hadoop YARN**
- 三、共享状态调度器
- 1. **核心思想**
- 2. **工作流程**
- 3. 优缺点
- 4. **典型案例:Google Omega**
- 四、三种调度架构的对比
在分布式系统中,调度器是任务与资源之间的纽带,负责将计算任务分配到合适的资源节点上执行。随着分布式系统规模的扩大和任务复杂度的增加,调度器的架构也在不断演进。
本文将详细介绍三种主流的分布式调度架构:中央式调度器、两级调度器和共享状态调度器,并通过实际案例(如 Google Borg、Hadoop YARN 和 Google Omega)深入探讨其工作原理、优缺点及适用场景。
一、中央式调度器
1. 核心思想
中央式调度器(Monolithic Scheduler)是分布式调度架构中最简单的一种形式。它由一个全局协调者(调度器)负责管理整个集群的资源,并分配任务到合适的节点上执行。调度器维护资源列表和任务列表,通过全局调度策略实现任务与资源的匹配。
2. 工作流程
- 资源收集:调度器通过集群中节点上的资源管理器收集各节点的资源信息。
- 任务接收:调度器接收用户提交的计算任务。
- 任务分配:调度器根据调度策略将任务分配到合适的节点上执行。
3. 优缺点
- 全局优化:调度器掌握全局资源信息,能够实现最优的任务分配。
- 实现简单:架构清晰,易于理解和实现。
- 单点故障:调度器一旦故障,整个系统无法工作。
- 性能瓶颈:所有任务请求和调度都集中在一个调度器上,容易成为系统的性能瓶颈。
4. 典型案例:Google Borg
- 架构:Borg 是 Google 内部的集群资源管理系统,管理数万台服务器和数十万个作业。
- 调度过程:
- 用户提交作业,Borg 将作业中的任务加入执行队列。
- 调度器扫描任务队列,将任务分配到满足资源条件和约束的节点上。
- 节点上的 Borglet 负责管理本地任务和资源,并向 BorgMaster 汇报状态。
- 特点:
- 支持高可靠性和高可用性。
- 通过约束条件(如处理器架构、OS 版本)实现资源的精确分配。
二、两级调度器
1. 核心思想
两级调度器(Two-Level Scheduler)将调度器分为两层:
- 一级调度器:负责资源管理和任务状态维护。
- 二级调度器:负责任务与资源的匹配,针对不同的计算框架(如 Spark、MapReduce)进行扩展。
2. 工作流程
- 资源收集:一级调度器通过节点上的资源管理器收集资源信息。
- 任务接收:一级调度器接收用户提交的计算任务,并将其交给二级调度器处理。
- 任务分配:二级调度器根据计算框架的调度策略将任务分配到合适的节点上。
- 任务执行:节点执行任务,并将结果返回给一级调度器。
3. 优缺点
- 扩展性强:通过二级调度器支持多种计算框架。
- 并发性高:能够处理高并发的任务请求。
- 全局优化受限:二级调度器无法获取全局资源信息,难以实现最优调度。
- 悲观锁限制:采用悲观锁机制,可能导致并发量受限。
4. 典型案例:Hadoop YARN
- 架构:YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 的资源管理系统,采用两级调度架构。
- 组件:
- Resource Manager:全局资源管理器,负责任务调度和资源分配。
- Application Master:单个作业的管理器,负责任务的拆分和资源申请。
- Node Manager:节点资源管理器,负责本地资源的管理和任务执行。
- 调度过程:
- 用户提交作业,Resource Manager 启动 Application Master。
- Application Master 向 Resource Manager 申请资源,并将任务分配到 Node Manager 上执行。
- Node Manager 启动任务,并将状态同步给 Application Master。
三、共享状态调度器
1. 核心思想
共享状态调度器(Shared-State Scheduler)通过共享全局资源状态,使每个调度器都能获取集群中的所有资源信息,从而实现全局优化。它采用乐观锁机制,支持高并发的任务调度。
2. 工作流程
- 资源同步:调度器从共享存储(如 State Storage)中同步全局资源状态。
- 任务分配:调度器根据全局资源状态将任务分配到合适的节点上。
- 冲突检测:采用乐观锁机制,在任务提交时检测资源冲突。
- 任务执行:节点执行任务,并将结果返回给调度器。
3. 优缺点
- 全局优化:每个调度器都能获取全局资源信息,实现最优调度。
- 高并发:采用乐观锁机制,支持高并发的任务调度。
- 实现复杂:需要维护全局资源状态,并处理资源冲突。
- 一致性挑战:在分布式环境下,保证资源状态的一致性较为困难。
4. 典型案例:Google Omega
- 架构:Omega 是 Google 提出的共享状态调度器,采用乐观锁机制实现高并发调度。
- 调度过程:
- 调度器从 State Storage 中同步全局资源状态。
- 调度器将作业拆分为多个任务,并为每个任务分配资源。
- 采用乐观锁机制检测资源冲突,确保任务执行的原子性。
- 任务执行完成后,释放资源并更新全局资源状态。
四、三种调度架构的对比
特性 | 中央式调度器 | 两级调度器 | 共享状态调度器 |
---|---|---|---|
核心思想 | 单一调度器管理全局资源 | 资源管理与任务调度分离 | 共享全局资源状态,支持高并发 |
优点 | 全局优化,实现简单 | 扩展性强,支持多种计算框架 | 全局优化,高并发 |
缺点 | 单点故障,性能瓶颈 | 全局优化受限,悲观锁限制 | 实现复杂,一致性挑战 |
适用场景 | 小规模集群 | 中等规模集群 | 大规模集群 |
典型案例 | Google Borg | Hadoop YARN | Google Omega |
分布式调度架构从中央式调度器到两级调度器,再到共享状态调度器,经历了从简单到复杂、从集中到分布式的演进过程。每种架构都有其独特的优势和适用场景:
- 中央式调度器适合小规模集群,实现简单但存在单点故障风险。
- 两级调度器通过分层设计支持多种计算框架,适合中等规模集群。
- 共享状态调度器通过共享全局资源状态和乐观锁机制,实现高并发和全局优化,适合大规模集群。
在实际应用中,应根据系统规模、任务复杂度和性能需求选择合适的调度架构,以实现资源的高效利用和任务的最优调度。
参考:《分布式架构原理与实现》