分布式资源管理和调度架构

概述

不管是计算任务还是数据存储都会涉及资源分配,资源包括但不限于硬件资源如CPU、内存、硬盘、网口。在单机环境中,资源管理相对简单;分布式环境中,资源分布相对分散,如何协调资源应对计算任务和数据存储就是亟待解决的问题。

资源管理和调度是将计算任务分配到资源的过程,为了处理并发的计算任务,系统会通过集群的方式组织资源。集群中的资源可以按照服务器或者虚拟机的方式划分。

注:本文是《分布式架构原理与实践》的读书笔记。

静态资源分配和动态资源分配

也可翻译为静态资源调度和动态资源调度。

静态资源分配

简单来说,静态资源分配就是提前知道系统面临的几种计算任务,且预设各个资源节点是稳定且可靠的,此时直接将各计算任务分配给对应的资源执行即可。
在这里插入图片描述
显而易见,静态资源分配存在如下问题:

  1. 如果某种类型的计算任务比较简单,任务很快执行成功,而另一种类型的任务执行耗时久,比如MR任务执行成功后,Spark任务还在排队中。则存在资源节点的闲置(浪费),没有充分使用预分配的系统资源
  2. 在系统进行资源扩容不方便,如果用户提交过多且比较紧急的Spark任务,能不能增加资源节点

动态资源分配

鉴于上面静态资源分配这种调度方式的弊端,可考虑引入一个调度器。当某种类型的计算任务执行完毕后,资源调度器会释放相应的资源,从而让其他计算任务有机会获取资源。如果有部分资源节点不可用,也不会影响整个集群的正常使用,所有资源节点都会在资源调度器的安排下完成计算任务。即便是对整个集群进行扩容,也只需把注意力放到资源节点的扩充上即可,任务与资源的动态匹配过程由资源调度器完成,实现计算任务和资源的解耦。
在这里插入图片描述
动态资源调度的优势:

  • 动态资源分配会根据计算任务实时分配资源,通常不会出现资源闲置的情况,只要没有达到资源的使用上限,是不会出现任务匹配不到资源的情况的。总体来说,资源利用率较高,硬件成本较低,有良好的扩展性
  • 需要收集资源的整体信息,形成资源池以便调配,因此能增加数据共享功能,所有计算任务的请求都可以共享资源
  • 动态资源分配方式同时支持如Spark、Storm、MapReduce等计算框架。让计算框架和资源利用得以完全解耦,使资源管理和调度平台实现平滑切换

资源调度

指的是根据调度策略对资源和计算任务做匹配。从参与者的角度讲,涉及资源、资源调度器和计算任务三部分。三者的关系,根据调度策略对计算任务和资源进行配对。常用的调度策略,如FIFO策略、公平策略、能力策略、延迟策略。

资源调度器中包含工作队列、调度策略、资源池和资源收集器。工作队列既是用来存放计算任务的容器,也是资源调度器组织和管理计算任务的一种形式。调度策略包含所需的任务调度策略,也就是对资源和计算任务进行匹配的算法。资源池是对收集起来的硬件资源进行存储和管理的地方。资源收集器,就是对资源节点上报的资源进行收

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

johnny233

晚饭能不能加鸡腿就靠你了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值