【分布式理论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. 工作流程

【分布式理论17】分布式调度3:分布式架构-从中央式调度到共享状态调度_第1张图片

  1. 资源收集:调度器通过集群中节点上的资源管理器收集各节点的资源信息。
  2. 任务接收:调度器接收用户提交的计算任务。
  3. 任务分配:调度器根据调度策略将任务分配到合适的节点上执行。

 

3. 优缺点

  • 全局优化:调度器掌握全局资源信息,能够实现最优的任务分配。
  • 实现简单:架构清晰,易于理解和实现。
  • 单点故障:调度器一旦故障,整个系统无法工作。
  • 性能瓶颈:所有任务请求和调度都集中在一个调度器上,容易成为系统的性能瓶颈。

 

4. 典型案例:Google Borg

  • 架构:Borg 是 Google 内部的集群资源管理系统,管理数万台服务器和数十万个作业。
  • 调度过程
    1. 用户提交作业,Borg 将作业中的任务加入执行队列。
    2. 调度器扫描任务队列,将任务分配到满足资源条件和约束的节点上。
    3. 节点上的 Borglet 负责管理本地任务和资源,并向 BorgMaster 汇报状态。
  • 特点
    • 支持高可靠性和高可用性。
    • 通过约束条件(如处理器架构、OS 版本)实现资源的精确分配。

 

二、两级调度器

1. 核心思想

两级调度器(Two-Level Scheduler)将调度器分为两层:

  • 一级调度器:负责资源管理和任务状态维护。
  • 二级调度器:负责任务与资源的匹配,针对不同的计算框架(如 Spark、MapReduce)进行扩展。

2. 工作流程

【分布式理论17】分布式调度3:分布式架构-从中央式调度到共享状态调度_第2张图片

  1. 资源收集:一级调度器通过节点上的资源管理器收集资源信息。
  2. 任务接收:一级调度器接收用户提交的计算任务,并将其交给二级调度器处理。
  3. 任务分配:二级调度器根据计算框架的调度策略将任务分配到合适的节点上。
  4. 任务执行:节点执行任务,并将结果返回给一级调度器。

 

3. 优缺点

  • 扩展性强:通过二级调度器支持多种计算框架。
  • 并发性高:能够处理高并发的任务请求。
  • 全局优化受限:二级调度器无法获取全局资源信息,难以实现最优调度。
  • 悲观锁限制:采用悲观锁机制,可能导致并发量受限。

 

4. 典型案例:Hadoop YARN

  • 架构:YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 的资源管理系统,采用两级调度架构。
  • 组件
    • Resource Manager:全局资源管理器,负责任务调度和资源分配。
    • Application Master:单个作业的管理器,负责任务的拆分和资源申请。
    • Node Manager:节点资源管理器,负责本地资源的管理和任务执行。
  • 调度过程
    1. 用户提交作业,Resource Manager 启动 Application Master。
    2. Application Master 向 Resource Manager 申请资源,并将任务分配到 Node Manager 上执行。
    3. Node Manager 启动任务,并将状态同步给 Application Master。

 

三、共享状态调度器

1. 核心思想

共享状态调度器(Shared-State Scheduler)通过共享全局资源状态,使每个调度器都能获取集群中的所有资源信息,从而实现全局优化。它采用乐观锁机制,支持高并发的任务调度。

 

2. 工作流程

  1. 资源同步:调度器从共享存储(如 State Storage)中同步全局资源状态。
  2. 任务分配:调度器根据全局资源状态将任务分配到合适的节点上。
  3. 冲突检测:采用乐观锁机制,在任务提交时检测资源冲突。
  4. 任务执行:节点执行任务,并将结果返回给调度器。

 

3. 优缺点

  • 全局优化:每个调度器都能获取全局资源信息,实现最优调度。
  • 高并发:采用乐观锁机制,支持高并发的任务调度。
  • 实现复杂:需要维护全局资源状态,并处理资源冲突。
  • 一致性挑战:在分布式环境下,保证资源状态的一致性较为困难。

 

4. 典型案例:Google Omega

  • 架构:Omega 是 Google 提出的共享状态调度器,采用乐观锁机制实现高并发调度。
  • 调度过程
    1. 调度器从 State Storage 中同步全局资源状态。
    2. 调度器将作业拆分为多个任务,并为每个任务分配资源。
    3. 采用乐观锁机制检测资源冲突,确保任务执行的原子性。
    4. 任务执行完成后,释放资源并更新全局资源状态。

 

四、三种调度架构的对比

特性 中央式调度器 两级调度器 共享状态调度器
核心思想 单一调度器管理全局资源 资源管理与任务调度分离 共享全局资源状态,支持高并发
优点 全局优化,实现简单 扩展性强,支持多种计算框架 全局优化,高并发
缺点 单点故障,性能瓶颈 全局优化受限,悲观锁限制 实现复杂,一致性挑战
适用场景 小规模集群 中等规模集群 大规模集群
典型案例 Google Borg Hadoop YARN Google Omega

分布式调度架构从中央式调度器两级调度器,再到共享状态调度器,经历了从简单到复杂、从集中到分布式的演进过程。每种架构都有其独特的优势和适用场景:

  • 中央式调度器适合小规模集群,实现简单但存在单点故障风险。
  • 两级调度器通过分层设计支持多种计算框架,适合中等规模集群。
  • 共享状态调度器通过共享全局资源状态和乐观锁机制,实现高并发和全局优化,适合大规模集群。

在实际应用中,应根据系统规模、任务复杂度和性能需求选择合适的调度架构,以实现资源的高效利用和任务的最优调度。

 
 
参考:《分布式架构原理与实现》

你可能感兴趣的:(#,分布式架构,分布式,架构)