频道栏目
首页 > 程序开发 > 软件开发 > 其他 > 正文
集群资源管理与调度
2016-08-29 09:20:32         来源:aq7218的博客  
收藏   我要投稿

资源管理方式

静态资源划分:将几圈中的所有资源做出静态划分,将划分后的固定的硬件资源指定给固定的计算框架使用,各框架之间各行其是,互不干扰。
缺点:资源整体利用率不高,经常会出现集群中有些计算系统资源不足,但是有些计算系统存在大量闲置资源的情形。 独立资源管理:在集群硬件层上抽象出一个功能独立的集群资源管理系统,将所有可用资源当成一个整体来进行管理,并对其他所有计算任务提供统一的资源管理与调度框架和接口,计算任务按需向其申请资源,使用完毕后释放给资源管理系统。
优点:
集群整体资源利用率高 可增加数据共享能力 支持多类型计算框架和多版本计算框架

资源管理抽象模型

概念模型:三要素—资源组织模型、调度策略、任务组织模型
概念模型图
这里写图片描述 资源组织模型:将集群中当前可用的各种资源采用一定的方式组织起来,以方便后续的资源分配过程。常见的资源组织方式是多层队列方式,其次是平级多队列和单队列模型。 调度策略:负责以一定的方式将资源分配给提交到系统的任务。常见的调度策略包括FIFO、公平调度、能力调度、延迟调度。 任务组织模型:将多用户提交的多任务按一定方式组织起来,方便后续的资源分配。 通用架构
这里写图片描述
说明
节点管理器:每台机器上配置,主要职责是不断地想资源收集器汇报本机当前的资源使用情况,并负责容器的管理工作。当某个任务被分配到本节点执行是,节点管理器负责将其纳入某个容器执行并对该容器进行资源隔离,以避免不同容器内任务的互相干肉。 通用调度器:由资源收集器和资源调度器构成,同事也管理资源池和工作队列数据结构。
资源收集器:负责从集群内各个节点收集和更新资源状态信息,并将其最新状况反映到资源池中,资源池列出了目前可用的系统资源
资源调度策略:具体决定护额将资源池中的可用资源分配给工作队列的方法,常见的策略包括FIFO、公平调度策略和能力调度策略。通常是可插拔的模块,可以根据情况设定符合业务状况的调度策略

调度系统设计的基本问题

资源异质性与工作负载异质性
资源异质性:从系统所拥有的资源的角度来看,集群机器很难保证采用完全相同的配置。一般可以通过将资源分配单位细粒度分为较小的单元来解决这个问题。 工作负载异质性:从任务的角度来看,因为各种服务和功能性各异,对资源的需求差异也很大。 数据局部性
大数据场景下的一个基本设计原则:将计算任务推送到数据所在地。因为数据量通常比较大,分布在不同机器中,而计算代码相对小得多。 节点局部性:可以将计算任务分配到数据节点所在机器节点,这是数据局部性最优情形,完成计算无须任何数据传输。 机架局部性:虽然计算任务和所需数据分属两个不同的计算节点,但这两个节点在同一个及家中,由于机架机器内部节点间的网络传输速度要明显高于机架间传输输的,因此较为高效。 全局局部性:需要跨机架网络传输,开销较大。 抢占式调度与非抢占式调度 资源分配粒度
全体分配(全分或不分):将作业的所有所需资源一次性分配完成。 增量满足式分配:只要分配部分资源技能启动一些任务开始运行,随着空闲资源的不断出现,可以逐步增量式分配给作业其他任务以维持任务 资源储备:特殊的增量满足式分配策略。只有分配到一定量的资源作业才能启动,但是在未获得足够资源的时候,作业可以先持有目前已分配的资源,并等待其他作业释放资源,这样从调度系统不断获取新资源并进行储备和积累,直到分配到的资源量达到最低标准后开始运行。但是采用这种方式,在作业启动前,已分配给该作业的资源一直处于闲置状态 饿死与死锁问题 资源隔离方法
为什么需要资源隔离?
通常资源管理框架(Yarn、Mesos)采取将各种资源分装在容器内的细粒度资源分配方法,整个分布式资源管理系统封装了为数众多的容器,为了避免不同任务之间相互干扰,需要提供容器间资源隔离方法。 Linux容器(LXC):轻量级的内核虚拟化技术,可以用来进行资源和进程运行的隔离,通过LXC可以在一台物理主机上隔离出多个相互隔离的容器。LXC在资源管理方面依赖于Linux内核的cgroups子系统,cgroups子系统是Linux内核提供的一个基于进程组的资源管理框架,可以为特定的进程组限定可用的资源。

资源管理与调度系统范型

分类:集中式调度器、两级调度器、状态共享调度器。
这里写图片描述 集中式调度器:在整个系统中只运行一个全局的中央调度器实例,所有之上的框架或者计算任务的资源请求全部经由中央调度器来满足,整个调度系统缺乏并发性且所有的调度逻辑全部由中央调度器来实现。
分为两种类型:单路径调度器和多路径调度器 单路径调度器:不论计算任务是何种类型,都采取统一的调度策略来进行资源管理与调度。这种方式的基本调度逻辑是采用融合多种考虑因素来综合计算每个任务的优先级,然后按照任务的优先级来进行后续调度与资源分配。因此,单路径调度器完全按照顺序调度而无并发性。 多路径调度器:对单路径调度器做出了改进,可以支持多种调度策略,尽管这些调度策略都是由中央调度器来实现的,但是在具体实现时可以根据任务类型来进行不同策略的分支选择,类似于Switch-Case分支路径判断。 缺点:由于将所有调度逻辑全部融入中央调度器,所以实现逻辑复杂,系统可扩展性差,支持不同类型的调度策略缺乏灵活性;并发性能差,比较适合较小规模的集群系统。 两级调度器:中央调度器+框架调度器
中央调度器:可以看到集群中所有机器的可用资源并管理其状态,它可以按照一定策略将集群中所有资源分配给各个计算框架,是一种粗粒度的资源调度方式。 框架调度器:在接收到中央调度器分配的资源后,可以根据自身计算任务的特性,使用自身的调度策略来进一步细粒度地分配从中央调度器中获得的各种资源。 在这种两级架构中,只有中央调度器能看到所有集群资源的状态,而每个框架并无全局资源概念,只能看到由中央调度器分配给自己的资源。 使用实例:Mesos、Yarn、Hadoop On Demand 优点:两级调度器由于在计算框架层面存在第二级资源调度,这可以提供一种比较天然的并发性,所以整体性能较好,也有较好的可扩展性 缺点:由于中央调度器的存在,使得这种并发是一种悲观并发控制,即中央调度器在做出将某些资源分配给哪个框架的决策过程中,必须依次顺序进行,并且对目前待决策的资源加锁以避免不同框架的资源申请冲突,因此会影响整体并发性能。 状态共享调度器:
优点:一方面乐观并发控制增加了系统的并发性能;另外一方面每个计算框架可以获得全局的资源使用状况信息。 不足:如果系统中存在大量资源竞争冲突(即多个框架申请相同的资源),这种乐观并发控制在做出仲裁后,竞争失败者很可能需要重新执行任务,造成大量资源浪费。 趋势:逐步弱化中央调度器的功能,逐渐增强框架调度器自由度的过程。 应用场合:集中式调度器比较适合小规模集群下的资源调度与管理,两级调度器比较适合负载同质的大规模集群,状态共享调度器时候负载异质性较强且资源冲突不多的大规模集群。

资源调度策略

FIFO调度策略 公平调度器
概念:将用户的任务分配到多个资源池,每个资源池设定资源分配的最低保障和最高上限,管理员也可以指定资源池的优先级,优先级高的资源池会被分配更多的资源,当一个资源池资源有剩余是,可以临时将剩余资源共享给其他资源池。 过程:
根据每个资源吃的最小资源保障量,将系统中的部分资源分配到各个资源池 根据资源池指定的优先级将剩余资源按照比例分配给各个资源池 在各个资源池中,按照作业优先级或者公平策略将资源分配给各个作业。 与能力调度器的区别
公平调度器支持抢占式调度。 公平调度器更强调作业间的公平性。在每个资源池中,公平调度器默认使用公平策略来实现资源分配,这种公平策略是最大最小公平算法的一种具体实现。 能力调度器:更强调资源在用户之间而非作业之间的公平性。 延迟调度策略:对于当前被调度到要被分配的任务i,如果当前资源不满足数据局部性,那么可以暂时放弃分配公平性,任务i不接受当前资源,而是等待后续的资源分配;当前资源可以跳过任务i分配给其他待调度任务j,如果任务i在被跳过k次后仍然等待不到满足的局部性资源,则放弃数据局部性,被迫接受当前资源来启动任务执行。 主资源公平调度策略 Mesos
这里写图片描述
这里写图片描述 Yarn
这里写图片描述
这里写图片描述
点击复制链接 与好友分享!回本站首页
相关TAG标签 集群 资源管理
上一篇:【Hibernate】--关联关系映射:一对一关联
下一篇:泛型让代码安全简单
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站