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

在这里插入图片描述

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

 

3. 优缺点

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

 

4. 典型案例:Google Borg

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

 

二、两级调度器

1. 核心思想

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

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

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 BorgHadoop YARNGoogle Omega

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QSPI flash xip模式运行

背景: 在做一个项目,调研p-sram当ram用在cadence qspi接口下是否正常,首先用qspi-flash xip模式验证控制器是否支持flash的xip模式。 一、更改步骤: 1.1首先配置链接脚本 默认链接脚本 OUTPUT_FORMAT("elf32-littlearm&q…

【C++】 —— 笔试刷题day_23

一、 打怪 题目解析 我们现在要去刷毛球怪,我的攻击和血量是h和a、毛球怪的攻击和血量是H和A; 我们和毛球怪的对决是轮流攻击(我们先手),当血量小于等于0时死亡; 现在我们要求在自己存活的条件下,最多能够杀死几只毛球…

对话模型和补全模型区别

对话模型和补全模型区别 什么是对话模型、补全模型 什么是 Completion 最基本地说,文本模型是一个经过训练的大型数学模型,旨在完成一项单一任务:预测下一个 token 或字符。这个过程被称为 completion,在您的旅程中您会经常遇到这个术语。 例如,当使用 completion 文本…

dirsearch 使用教程:详细指南与配置解析

dirsearch 是一款强大的开源命令行工具,用于对 Web 服务器进行目录和文件暴力破解。它通过扫描目标网站,尝试发现隐藏的目录、文件或潜在的敏感资源,广泛应用于渗透测试和安全审计。dirsearch 提供丰富的选项和灵活的配置文件支持&#xff0c…

跟着deepseek学golang--认识golang

文章目录 一、Golang核心优势1. 极简部署方式生产案例​​:依赖管理​​:容器实践​​: 2. 静态类型系统​​类型安全示例​​:性能优势​​:​​代码重构​​: 3. 语言级并发支持​​GMP调度模型实例​​&…

Web常见攻击方式及防御措施

一、常见Web攻击方式 1. 跨站脚本攻击(XSS) 攻击原理:攻击者向网页注入恶意脚本,在用户浏览器执行 存储型XSS:恶意脚本存储在服务器(如评论区) 反射型XSS:恶意脚本通过URL参数反射给用户 DOM型XSS&…

CGAL 网格内部生成随机点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里实现一种基于点的射线法来判断一个点是否一个多面提的内部,通过不停的生成随机点,以达到我们想要的效果,思路其实相对简单,但是很实用。具体内容如下: 1. 首先,我们需要构建随机方向的射线(半无限射线)…

tigase源码学习杂记-组件化设计

前言 tigase官方号称高度抽象和组件化。这篇文章就记录一下我研究组件化的相关设计 概述 我的理解tigase高度组件化是所有的关键的功能的类,它都称之为组件,即只要继承于BasicComponent,它都可以成为组件,BasicComponent类实现…

【Redis】 Redis中常见的数据类型(二)

文章目录 前言一、 List 列表1. List 列表简介2.命令3. 阻塞版本命令4. 内部编码5. 使用场景 二、Set 集合1. Set简单介绍2. 普通命令3 . 集合间操作4. 内部编码5. 使用场景 三、Zset 有序集合1.Zset 有序集合简介2. 普通命令3. 集合间操作4. 内部编码5. 使用场景 结语 前言 在…

OpenAI为何觊觎Chrome?AI时代浏览器争夺战背后的深层逻辑

目录 引言:一场蓄谋已久的"蛇吞象"计划 一、Chrome:数字世界的"黄金入口" 1.1 用户规模对比:ChatGPT与Chrome的悬殊差距 1.2 Chrome的生态价值远超浏览器本身 二、OpenAI的"入口焦虑"与战略布局 2.1 AI时…

二分小专题

P1102 A-B 数对 P1102 A-B 数对 暴力枚举还是很好做的&#xff0c;直接上双层循环OK 二分思路:查找边界情况&#xff0c;找出最大下标和最小下标&#xff0c;两者相减1即为答案所求 废话不多说&#xff0c;上代码 //暴力O(n^3) 72pts // #include<bits/stdc.h> // usin…

java延迟map, 自定义延迟map, 过期清理map,map能力扩展。如何设置map数据过期,改造map适配数据过期

1. 功能&#xff1a; map 线程安全&#xff0c;能够对存入的数据设置过期&#xff0c;或者自定义删除 2. aliyun代码看到的一个对象正好符合上述需求 出处是aliyun sdk core jar包的一个类。感兴趣可以去下载下jar查看 下面是源码&#xff1a; package com.aliyuncs.policy.…

国芯思辰|可编程线性霍尔传感器AH820替换HAL825用于汽车涡轮增压

涡轮增压技术是提高发动机的进气能力的技术&#xff0c;霍尔传感器可以达到监测涡轮转速的作用。在涡轮增压器的轴上安装一个永磁体&#xff0c;当涡轮旋转时&#xff0c;永磁体也随之转动&#xff0c;产生周期性变化的磁场。霍尔传感器靠近永磁体安装&#xff0c;能够检测到磁…

(转)正则化等最优化方法介绍

参考&#xff1a; http://blog.csdn.net/pipisorry/article/details/52108040 附带 损失函数&#xff1b;经验风险&#xff1b;正则化&#xff1b;结构风险 损失函数&#xff08;loss function&#xff09;是用来估量你模型的预测值f(x)与真实值Y的不一致程度&#xff0c;它是…

多维时序 | LightGBM多变量时序预测(Matlab完整源码和数据,适合基础小白研究)

多维时序 | LightGBM多变量时序预测&#xff08;Matlab完整源码和数据&#xff0c;适合基础小白研究&#xff09; 目录 多维时序 | LightGBM多变量时序预测&#xff08;Matlab完整源码和数据&#xff0c;适合基础小白研究&#xff09;效果一览基本介绍程序设计参考资料 效果一览…

【解决】Android Gradle Sync 报错 Could not read workspace metadata

异常信息 Caused by: java.io.UncheckedIOException:Could not read workspace metadata from C:\Users\xxx\.gradle\caches\transforms-4\69955912123c68eecd096b71c66ee211\metadata.bin 异常原因 看字面意思是不能读取metadata文件&#xff0c;原因可能是因为缓存目录异常…

Java面试实战:电商场景下的Spring Cloud微服务架构与缓存技术剖析

第一轮提问 面试官: 谢飞机&#xff0c;我们先从基础问题开始。请问你知道Spring Boot和Spring Cloud的区别吗&#xff1f; 谢飞机: 当然知道&#xff01;Spring Boot主要用于快速构建独立运行的Spring应用&#xff0c;而Spring Cloud则是在Spring Boot的基础上实现分布式系统…

Express 路由使用、请求报文参数获取、路由参数提取

Express 路由使用、请求报文参数获取、路由参数提取 &#x1f6e3;️ 一、Express 路由基本用法 const express require(express); const app express();// 基本 GET 路由 app.get(/, (req, res) > {res.send(Hello GET!); });// POST 路由 app.post(/submit, (req, res)…

【前端】手写代码输出题易错点汇总

两天更新完。 const promise new Promise((resolve, reject) > {console.log(1);console.log(2); }); promise.then(() > {console.log(3); }); console.log(4); //1 //2 //4promise.then 是微任务&#xff0c;它会在所有的宏任务执行完之后才会执行&#xff0c;同时需…

基于深度学习和单目测距的前车防撞及车道偏离预警系统

随着人工智能与计算机视觉技术的飞速发展,高级驾驶辅助系统(ADAS)已成为现代汽车智能化的关键标志。它不仅能有效提升行车安全,还能为自动驾驶时代的全面到来奠定坚实基础。本文深入剖析一套功能完备、基于深度学习模型的 ADAS 系统的架构与核心实现,带您领略智能驾驶背后…