更新时间:2024-10-11 GMT+08:00

动态资源

简介

Yarn是大数据集群中的分布式资源管理服务,大数据集群为Yarn分配资源,资源总量可配置。Yarn内部为任务队列进一步分配和调度计算资源。对于Mapreduce、Spark、Flink和Hive的任务队列,计算资源完全由Yarn来分配和调度。

Yarn任务队列是计算资源分配的基本单位。

对于租户,通过Yarn任务队列申请到的资源是动态资源。用户可以动态创建并修改任务队列的配额,可以查看任务队列的使用状态和使用统计。

资源池

现代企业IT经常会面对纷繁复杂的集群环境和上层需求。例如以下业务场景:

  • 集群异构,集群中各个节点的计算速度、存储容量和网络性能存在差异,需要把复杂应用的所有任务按照需求,合理地分配到各个计算节点上。
  • 计算分离,多个部门需要数据共享,但是需要把计算完全分离在不同的计算节点上。

这就要求对计算资源的节点进一步分区。

资源池用来指定动态资源的配置。Yarn任务队列和资源池关联,可实现资源的分配和调度。

一个租户只能设置一个默认资源池。用户通过绑定租户相关的角色,来使用该租户资源池的资源。若需要使用多个资源池的资源,可通过绑定多个租户相关的角色实现。

调度机制

Yarn动态资源支持标签调度(Label Based Scheduling)策略,此策略通过为计算节点(Yarn NodeManager)创建标签(Label),将具有相同标签的计算节点添加到同一个资源池中,Yarn根据任务队列对资源的需求,将任务队列和有相应标签的资源池动态关联。

例如,集群中有40个以上的节点,根据各节点的硬件和网络配置,分别用Normal、HighCPU、HighMEM、HighIO为四类节点创建标签,添加到四个资源池中,资源池中的各节点性能如表1所示。

表1 不同资源池中的各节点性能

标签名

节点数

硬件和网络配置

添加到

关联

Normal

10

一般

资源池A

普通的任务队列

HighCPU

10

高性能CPU

资源池B

计算密集型的任务队列

HighMEM

10

大量内存

资源池C

内存密集型的任务队列

HighIO

10

高性能网络

资源池D

IO密集型的任务队列

任务队列只能使用所关联的资源池里的计算节点。

  • 普通的任务队列关联资源池A,使用硬件和网络配置一般的Normal节点。
  • 计算密集型的任务队列关联资源池B,使用具有高性能CPU的HighCPU节点。
  • 内存密集型的任务队列关联资源池C,使用具有大量内存的HighMEM节点。
  • IO密集型的任务队列关联资源池D,使用具有高性能网络的HighIO节点。

Yarn任务队列与特定的资源池关联,可以更有效地使用资源,保证节点性能充足且互不影响。

FusionInsight Manager中最多支持添加50个资源池。系统默认包含一个默认资源池。

调度器介绍

MRS集群默认即启用了Superior调度器。

  • Superior调度器为增强型,Superior取名源自苏必利尔湖,意指由该调度器管理的数据足够大。

为满足企业需求,克服Yarn社区在调度上遇到的挑战与困难,Superior调度器做了以下增强:

  • 增强资源共享策略

    Superior调度器支持队列层级,在同集群集成开源调度器的特性,并基于可配置策略进一步共享资源。针对实例,管理员可通过Superior调度器为队列同时配置绝对值或百分比的资源策略计划。Superior调度器的资源共享策略将Yarn的标签调度增强为资源池特性,Yarn集群中的节点可根据容量或业务类型不同,进行分组以使队列更有效地利用资源。

  • 基于租户的资源预留策略

    部分租户可能在某些时间中运行关键任务,租户所需的资源应保证可用。Superior调度器构建了支持资源预留策略的机制,在这些租户队列运行的任务可立即获取到预留资源,以保证计划的关键任务可正常执行。

  • 租户和资源池的用户公平共享

    Superior调度器提供了队列内用户间共享资源的配置能力。每个租户中可能存在不同权重的用户,高权重用户可能需要更多共享资源。

  • 大集群环境下的调度性能优势

    Superior调度器接收到各个NodeManager上报的心跳信息,并将资源信息保存在内存中,使得调度器能够全局掌控集群的资源使用情况。Superior调度器采用了push调度模型,令调度更加精确、高效,大大提高了大集群下的资源使用率。另外,Superior调度器在NodeManager心跳间隔较大的情况下,调度性能依然优异,不牺牲调度性能,也能避免大集群环境下的“心跳风暴”。

  • 优先策略

    当某个服务在获取所有可用资源后还无法满足最小资源的要求,则会发生优先抢占。抢占功能默认关闭。