动态资源
简介
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所示。
标签名 |
节点数 |
硬件和网络配置 |
添加到 |
关联 |
---|---|---|---|---|
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心跳间隔较大的情况下,调度性能依然优异,不牺牲调度性能,也能避免大集群环境下的“心跳风暴”。
- 优先策略