当前位置:网站首页>YARN组织架构
YARN组织架构
2022-07-06 09:01:00 【棱镜7】
1. YARN 集群的架构和工作原理
YARN 的基本设计思想是将 MapReduce V1 中的 JobTracker 拆分为两个独立的服务:ResourceManager 和 ApplicationMaster。
- ResourceManager(负责整个系统的资源管理和分配): RM 是一个全局的资源管理器,负责整个系统的资源管理和分配,它主要由两个部分组成:调度器(Scheduler)和应用程序管理器(Application Manager)。
调度器根据容量、队列等限制条件,将系统中的资源分配给正在运行的应用程序,在保证容量、公平性和服务等级的前提下,优化集群资源利用率,让所有的资源都被充分利用
应用程序管理器负责管理整个系统中的所有的应用程序,包括应用程序的提交、与调度器协商资源以启动 ApplicationMaster、监控ApplicationMaster 运行状态并在失败时重启它
- ApplicationMaster (负责单个应用程序的的管理):用户提交的一个应用程序会对应于一个ApplicationMaster,它的主要功能有:
- 与 RM 调度器协商以获得资源,资源以 Container 表示。
- 将得到的任务进一步分配给内部的任务。
- 与 NM 通信以启动/停止任务。
- 监控所有的内部任务状态,并在任务运行失败的时候重新为任务申请资源以重启任务
- NodeManager: NodeManager 是每个节点上的资源和任务管理器,一方面,它会定期地向 RM 汇报本节点上的资源使用情况和各个 Container 的运行状态;另一方面,他接收并处理来自 AM 的 Container 启动和停止请求。
- Container: Container 是 YARN 中的资源抽象,封装了各种资源。一个应用程序会分配一个 Container,这个应用程序只能使用这个 Container 中描述的资源。Container 是一个动态资源的划分单位,更能充分利用资源
2. YARN的任务提交流程
当向YARN提交一个应用程序之后,YARN将分两个阶段运行程序:一是启动ApplicationMaster;二是由ApplicationMaster创建应用程序,然后为他申请资源,监控程序的运行,直至结束。
具体步骤:
(1)用户向YARN提交一个应用程序,并指定ApploicationMaster程序;
(2)ResourceManager为这个应用程序分配一个Container,并与对应的NodeManager通讯,在这个Container中启动ApplicationMaster。
(3)ApplicationMaster向ResourceManager注册,然后拆分任务分配给内部,为各个拆分的任务申请资源,然后监控这些任务的运行,知道结束。
(4)ApplicationMaster采用轮询的方式向RM申请资源。
(5)AM申请到资源后,与对应的NodeManager通讯,以启动任务。
(6)任务启动后,各个任务会向AM报告自己的状态和进度,以便任务失败时,AM可以重新申请资源重启任务。
(7)任务完成后,AM向RM注销并关闭自己。
3. YARN 的资源调度三种模型
在 Yarn 中有三种调度器可以选择:FIFO Scheduler ,Capacity Scheduler,Fair Scheduler。
Apache 版本的 hadoop 默认使用的是 Capacity Scheduler 调度方式。CDH 版本的默认使用的是 Fair Scheduler 调度方式
FIFO Scheduler(先来先服务):
FIFO Scheduler 把应用按提交的顺序排成一个队列,这是一个先进先出队列,在进行资源分配的时候,先给队列中最头上的应用进行分配资源,待最头上的应用需求满足后再给下一个分配,以此类推。
FIFO Scheduler 是最简单也是最容易理解的调度器,也不需要任何配置,但它并不适用于共享集群。大的应用可能会占用所有集群资源,这就导致其它应用被阻塞,比如有个大任务在执行,占用了全部的资源,再提交一个小任务,则此小任务会一直被阻塞。
Capacity Scheduler(容量/能力调度器):
对于 Capacity 调度器,有一个专门的队列用来运行小任务,但是为小任务专门设置一个队列会预先占用一定的集群资源,这就导致大任务的执行时间会落后于使用 FIFO 调度器时的时间。
Fair Scheduler(公平调度器):
在 Fair 调度器中,我们不需要预先占用一定的系统资源,Fair 调度器会为所有运行的 job 动态的调整系统资源。
比如:当第一个大 job 提交时,只有这一个 job 在运行,此时它获得了所有集群资源;当第二个小任务提交后,Fair 调度器会分配一半资源给这个小任务,让这两个任务公平的共享集群资源。
需要注意的是,在 Fair 调度器中,从第二个任务提交到获得资源会有一定的延迟,因为它需要等待第一个任务释放占用的 Container。小任务执行完成之后也会释放自己占用的资源,大任务又获得了全部的系统资源。最终的效果就是 Fair调度器即得到了高的资源利用率又能保证小任务及时完成
边栏推荐
- Servlet learning diary 7 -- servlet forwarding and redirection
- Global and Chinese markets of SERS substrates 2022-2028: Research Report on technology, participants, trends, market size and share
- [OC foundation framework] - string and date and time >
- 068.查找插入位置--二分查找
- Heap (priority queue) topic
- Mise en œuvre de la quantification post - formation du bminf
- AcWing 2456. 记事本
- 【图的三大存储方式】只会用邻接矩阵就out了
- Lua script of redis
- 不同的数据驱动代码执行相同的测试场景
猜你喜欢
Redis之五大基础数据结构深入、应用场景
KDD 2022论文合集(持续更新中)
数字人主播618手语带货,便捷2780万名听障人士
Digital people anchor 618 sign language with goods, convenient for 27.8 million people with hearing impairment
Redis之Lua脚本
工作流—activiti7环境搭建
Advanced Computer Network Review(3)——BBR
SimCLR:NLP中的对比学习
Advanced Computer Network Review(4)——Congestion Control of MPTCP
Withdrawal of wechat applet (enterprise payment to change)
随机推荐
在QWidget上实现窗口阻塞
Once you change the test steps, write all the code. Why not try yaml to realize data-driven?
Redis之Lua脚本
Parameterization of postman
Seven layer network architecture
Pytest之收集用例规则与运行指定用例
postman之参数化详解
Kratos ares microservice framework (III)
使用标签模板解决用户恶意输入的问题
Redis之连接redis服务命令
Redis cluster
Using label template to solve the problem of malicious input by users
CSP student queue
Intel distiller Toolkit - Quantitative implementation 2
I-BERT
Opencv+dlib realizes "matching" glasses for Mona Lisa
Selenium+Pytest自动化测试框架实战
Publish and subscribe to redis
LeetCode41——First Missing Positive——hashing in place & swap
LeetCode41——First Missing Positive——hashing in place & swap