面向大规模集群的双模式集群任务调度模拟系统
本文是一篇决策模拟论文,本文提出了一种结合软件模拟和实际测试模拟的分布式集群模拟方法,它设计的目的在于辅助分布式任务执行集群的开发,特别是为了使普通开发者能在资源受限的情况下模拟分布式集群在大规模的场景表现。
第1章绪论
1.1研究背景及意义
近年来,云计算作为一种新兴趋势受到服务提供商和用户的大量关注。伯克利的报告指出,云计算将大幅改变现有的IT产业[1]。在云计算中,算力资源、存储资源、应用程序等计算资源可以通过网络按照现用现付的模式提供给用户[2]。在该模式下数据中心可以将计算资源整合起来,通过按需使用的方式提供给众多用户,从而高效地利用计算资源。
云计算的发展当中出现了多种云服务形式。最先出现的服务形式是基础设施即服务(IaaS),在此模式下云服务商可以帮助用户维护服务器,数据库,网络环境等IT基础设施。为了使服务变得更加方便以及提高计算资源的利用效率,云计算领域又先后提出了平台即服务(PaaS)以及软件即服务(SaaS)的概念,在PaaS模式下用户不再需要关心底层基础设施,也无需自行配置运行环境。云服务商提供一个应用运行平台,用户可以基于该运行平台运行自身应用。而在SaaS下用户更是无需自行编写应用,云服务商直接提供软件服务。在Paas和SaaS模式当中,云计算中心的资源调度的单位变成了应用。在实际当中,这些应用常常依托于容器化技术,容器化应用可以方便地在不同物理节点间迁移,相比于虚拟机的形式,容器化应用可以在一台主机上高密度部署,使得资源利用率更高。由于容器化应用的启动停止比虚拟机形式更加灵活,容器化应用在水平扩容方面更加有优势。在应用请求的高峰期,容器化应用可以生成更多副本,而在请求相对空闲期减少应用的副本数。容器化应用的提交,结束等动作更加频繁,系统的调度请求更加密集。相比于IaaS模式,这些模式对调度系统的要求有所不同。伴随着Serverless的趋势[3],FaaS作为一种更灵活的方式,在云服务中得到广泛应用[2]。在该模式下资源管理单位从完整的单体应用变成了更细粒度的函数。
.........................
1.2国内外研究现状
在调度集群的设计领域,目前有多种架构类型的调度集群架构。比较典型的有集中式调度、共享状态式调度和去中心化调度。集中式调度采用单一的中央调度器来管理整个集群的资源和任务调度。所有的节点和应用都需要与中央调度器交互,汇报自身状态并接收调度决策。其优点在于其架构相对简单,便于管理和推理全局状态以及更容易实现复杂的调度策略和规则。其缺点在于其中央调度器可能会成为单点故障。当集群规模扩大时,中央调度器可能会成为性能瓶颈。集中式调度集群的代表有Apache Hadoop YARN[5],Apache Mesos[6],以及Spark[7]原生的调度系统。共享状态调度架构引入了多个相互协作的调度器实例,通过共享集群状态来进行分布式调度决策。每个调度器实例都可以独立运行,并且访问集群的全局状态。其优点在于其提高了可伸缩性和容错性,无单点故障,在不同调度器实例可以应用不同的调度策略。其缺点需要一个外部高可用的状态存储系统(如Zookeeper[8])来存储集群状态,并且状态共享和一致性协议可能会增加集群设计的复杂性。共享状态集群的代表有Google Omega,独立部署etcd且有多个apiserver的Kubernetes集群。去中心化调度采用完全分布式的架构,没有中央调度器或集群状态存储。每个节点都是独立的调度器,只根据本地信息做出调度决策。
.......................
第2章相关工作与研究
2.1常见调度系统架构
目前常见的调度系统架构有集中式调度架构,共享状态式调度架构,去中心化式调度架构。下面将介绍这些架构的典型代表。此外,由于调度系统的复杂性,一些调度可能是混合架构的设计,融合了多种类型架构的优势,这些调度集群的存在说明在调度系统领域架构的差异性是相当丰富的,正是由于这些架构的差异性所在,导致了目前很少有适合的研究工具公平对比这些架构调度系统的性能差异。
2.1.1集中式调度架构
集中式调度是最常见的调度架构,它具有简单性,一致性,资源集中管理的优势。但是该架构的调度集群容易因为单节点故障导致系统失效,并且容易由于集群规模扩展而出现单节点性能瓶颈[20]。中心化的调度架构被广泛应用在大型的集群管理系统当中,包括Hadoop Yarn[5],Quincy[21],Firmament[22]和Gemini[23]。
决策模拟论文怎么写
Apache Hadoop YARN是Apache Hadoop生态系统的一个关键组件,用于集群资源的管理和任务调度。YARN的目标是提供一个通用的、可扩展的资源管理平台,使得Hadoop能够运行更广泛的应用程序,而不仅仅局限于MapReduce。在YARN当中其管理集群资源的核心是ResourceManager,其部署在YARN集群的主节点当中,与此对应的是部署在工作节点的NodeManager。当外部的客户端向YARN申请资源时,ResourceManager会根据其所有工作节点的信息,向合适的NodeManager发送资源分配请求。部署在工作节点上的NodeManager会需要定时地向ResourceManager返回自身节点的状态信息。
............................
2.2调度集群的软件模拟
软件模拟方案相比实际模拟方案需要的计算资源更低,测试的运行更为方便,但缺点是软件模拟在构造上与实际生产环境的差异较大,调度集群的研究在软件模拟中取得的效果缺少可信度。
2.2.1离散事件驱动模拟
离散事件模型可以逐个事件地动态模拟现实世界,并生成详细的表现报告,它广泛地用于各种模拟当中[30]。GridSim[13],CloudSim[12]以及其派生的集群模拟器以SimJava[31]为底层模拟框架,SimJava以离散事件模型为核心。图2.4描述了离散事件驱动的模型。
离散事件驱动的核心概念是事件循环机制。事件循环的名称的由来在于其算法本身是一个循环执行事件结构。如图2.4所示,事件循环开始前会进行初始化模拟系统的时间,集群状态和事件列表。在事件循环机制下,集群状态是包含集群中调度节点,工作节点的状态,这些状态又包含了任务队列的状态,工作节点运行任务的状态。事件列表又被称为未来事件列表(FEL),未来事件列表代表着在集群未来会发生的事件,值得注意的是未来事件集在模拟过程中是可以被不断修改的。这些事件在列表中以时间顺序排队。在开始时,该任务队列会加入一些初始的事件。该列表中头部事件就是下一个集群要发生的事件。事件循环会重复执行最新的事件,当执行一个事件后,集群的状态会得到修改,同时事件集本身也有可能得到更改,该更改包括事件增加,事件内容修改,事件删除。从事件集本身可以修改看出,某个时刻下,模拟器的未来事件集并不代表该集群的未来执行完全按照事件集进行。事件集和集群状态共同组成模拟器的状态,模拟器的状态只会由于事件的修改而修改,下一个执行的事件是确定的,即事件列表最前的事件。事件的执行会修改集群的状态,并会影响后续事件的状态。
.....................................
第3章 双模拟方式并行的分布式调度集群模拟方法 ........................ 18
3.1 模拟方法概述 ...................... 18
3.2 基于Actor模型的分布式任务调度系统描述方法 ..................... 19
第4章 大规模分布式调度集群模拟系统设计 ....................... 35
4.1 设计目标及解决办法 ..................... 35
4.2 模拟框架整体架构设计........................ 36
第5章 模拟系统的功能测试以及可靠性验证 ....................... 55
5.1 实验环境配置 ................................ 55
5.1.1 软件模拟模式的实验平台 ......................... 55
5.1.2 实际部署模拟模式的实验平台 ........................ 55
5.1.3 调度集群算法与参数配置 .......................... 56
第5章模拟系统的功能测试以及可靠性验证
5.1实验环境配置
本模拟支持两种模式的集群模拟测试,因此本文为本模拟器的功能测试以及可靠性验证准备了两套测试环境。它们分别是软件模拟模式测试使用的单机环境,以及实际部署化模拟模式下的Kubenetes集群实验环境。
5.1.1软件模拟模式的实验平台
在模拟器的软件模拟模式中,本文使用机器配置如下所示:•CPU:AMD R5 3600 [email protected]•内存:16GB•硬盘:1TB SSD在模拟器的软件模式中使用的软件环境如下•操作系统:Ubuntu:22.04•软件版本:Go:1.21 Python:3.10 Make:4.3
决策模拟论文参考
..............................
第6章总结和展望
6.1本文工作总结
本文提出了一种结合软件模拟和实际测试模拟的分布式集群模拟方法,它设计的目的在于辅助分布式任务执行集群的开发,特别是为了使普通开发者能在资源受限的情况下模拟分布式集群在大规模的场景表现。使用该模拟器可以用于分析不同集群架构设计的预期性能,并附带丰富的集群调试功能以及结果分析功能。本文模拟器实现以上功能的核心设计是本模拟采用了的基于Actor模型的集群描述方法,该描述方法使得集群的定义脱离了底层的实现,使得Actor模型可以被软件模拟也可以被实际部署测试模拟。该做法的优势是使得开发者快速的进行模型算法的修改,并可快速的将软件模拟中的模型转换为实际部署的集群。而两种模式同时的模拟使得通过实际测试数据校准软件模拟成为可能。实际部署测试用于收集实际生产环境的具体环境参数用于校准模拟器。在软件测试中本模拟器采用离散时间驱动架构,集群状态随时间点迭代的模拟方法。经过测试该架构的优势在于可以利用延长模拟时间的方式,复用一台计算机的资源来模拟大型的集群的运行。其中模拟器的设计可以用于模拟集群各种网络条件的场景,以及可以模拟节点服务拥堵的情况。本模拟器的实际部署模式可以将模拟器模型实例化真正可运行的集群。该模式基于Kubenetes集群,经过测试本模拟器可以无缝完成集群模型的实例化,并且,实际测试得到的数据可以用于校准软件模拟器使得软件模拟器在小规模情景下的实验结果逼近实际部署的实验结果,从而佐证软件模拟的结果的可靠性。
参考文献(略)