[TOC]
yarn的基本概念

yarn由两部分组成:
- ResourceManager 负责整个集群资源的管理和分配
- NodeManager 管理很多容器,容器中运行着正真的分布式计算程序,比如flink,或者spark。NodeManager需要向ResourceManager上报自己的任务运行情况,同时向ResourceManager发起资源申请
从客户端向yarn提交的应用,最终都根据其资源需求,被放在NodeManager的容器中执行。yarn会对每个应用启动一个ApplicationMaster,它负责收集和监控该应用在其它NodeManager容器中执行的分布式任务状态,并和ResourceManager进行资源协调(具体同ResourceManager中的Scheuler)。图中绿色的模块即为一个应用在NodeManager中的分布式运行结构。
ResourceManager由两部分组成:
- scheduler 只负责整个集群的磁盘、cpu、网络、内存等资源的管理,并根据应用的需求分配资源
- ApplicationManager 注意同应用的ApplicationMaster区分开。ApplicationManager主要负责初始化应用的ApplicationMaster容器,同时监控ApplicationMaster的运行状态,并在其失败后尝试恢复。
总结来看: yarn提供了一个分布式的资源管理和任务执行管理平台。yarn相当于一个分布式的操作系统,管理资源和任务执行 其中的ResourceManager的ApplicationMananger负责管理应用的ApplicationMaster ApplicationMaster又负责管理自己具体的所有分布式任务
scheduler
hadoop 2.6.0提供了两种scheduler
- CapacityScheduler
- Fair Scheduler
两者都是基于队列。前者是yahoo开源贡献的,后者是facebook开源贡献的。重点介绍Fair Scheduler ,也是cdh官方推荐的scheduler
最新的yarn版本支持更细粒度的资源管理。加入了ReservationSystem,可以对job的资源做deadline限制,以及可预期的任务做资源保留
集群整体的资源定义
cpu, 内存。配置参数
fair scheduler简介
配置demo
<?xml version="1.0"?>
<allocations>
<queue name="sample_queue">
<minResources>10000 mb,0vcores</minResources>
<maxResources>90000 mb,0vcores</maxResources>
<maxRunningApps>50</maxRunningApps>
<maxAMShare>0.1</maxAMShare>
<weight>2.0</weight>
<schedulingPolicy>fair</schedulingPolicy>
<queue name="sample_sub_queue">
<aclSubmitApps>charlie</aclSubmitApps>
<minResources>5000 mb,0vcores</minResources>
</queue>
</queue>
<queueMaxAMShareDefault>0.5</queueMaxAMShareDefault>
<!—- Queue 'secondary_group_queueue' is a parent queue and may have
user queues under it -->
<queue name="secondary_group_queue" type="parent">
<weight>3.0</weight>
</queue>
<user name="sample_user">
<maxRunningApps>30</maxRunningApps>
<

本文介绍了YARN的基本概念,重点解析了Fair Scheduler的配置,包括队列的资源限制、抢占策略、内部资源调度策略和分配规则。通过CDH集群的资源划分示例,展示了如何基于组限制用户资源。此外,还探讨了YARN的资源管理和任务执行管理平台的角色,以及CapacityScheduler和Fair Scheduler的对比。
最低0.47元/天 解锁文章
2150

被折叠的 条评论
为什么被折叠?



