当前位置:网站首页>YARN笔记
YARN笔记
2022-06-22 18:03:00 【QYHuiiQ】
- YARN(Yet Another Resource Negotiator),是一个通用的资源管理系统和调用平台。说它是通用的,是因为YARN不只是参与MapReduce任务的调度,也会参与Storm,Spark等其他服务中的资源调度。
- YRAN主要负责集群中内存、CPU等资源的管理以及应用程序申请资源时如何分配。HDFS主要负责磁盘上资源的管理。
- YARN不关心申请资源的是什么应用程序,也不关心申请资源是用来做什么的,它只关心有应用程序申请资源,那么就要去帮助分配资源。
- YARN的三大组件:ResourceManager、NodeManager、ApplicationMaster。
- 官方架构图分析

在该架构图中,从机器角度来看,主要有两种角色:ResourceManager和NodeManager。
ResourceManager是通过yarn-site.xml中<name>yarn.resourcemanager.hostname</name>这个属性来配置的;而集群中的每个节点都会运行NodeManager这个角色。

从应用程序角度来看,架构图中需要一种角色:ApplicationMaster(AppMstr),由于YARN是通用的,所以这个角色的名称也是统称,比如在MapReduce中这个角色就被称为MRAppMstr。AppMstr主要负责一个应用程序内部的管理职责,比如要管理map/reduce任务的执行状态等。每个应用程序在运行时都会有一个AppMstr来统领该应用程序的管理任务。
- 机器中的不管是AppMstr,或者是mapTask、reduceTask等都是以容器的形式来运行的,这样是为了每台机器上运行多个应用程序时可以保证资源的相互隔离互不干扰,运行完就会释放容器,并回收资源。
- ResourceManager:是整个集群中资源分配的顶级角色,决定着集群中所有应用程序之间的资源分配;主要用于接受用户提交的作业,并通过NodeManager来分配和管理各个节点上的计算资源。
- ResourceScheduler:是ResourceManager的内部组件之一,ResourceManager分配资源就是通过ResourceScheduler来实现的。
- NodeManager:运行在每个节点上,主要负责管理本台机器上的资源使用情况,比如启动容器、释放容器、回收资源等;向ResourceManager汇报自己所有的资源、已使用的资源等,并接收ResourceManager为其分配的指令。
- ApplicationMaster:伴随应用程序的执行而出现。只有当客户端提交了应用程序时,该应用程序才会对应运行一个AppMstr,否则如果没有应用程序时,也就不会有AppMstr。它是应用程序内部的leader,掌管着该应用程序内部的一些资源管理及任务执行。当一个应用程序提交时,最先运行的进程就是AppMstr进程。
- 作业提交运行的大致流程:
- 客户端提交作业,YARN中会连接到ResourceManager。
- 提交作业后,YARN会找到一个机器上的空闲容器并要求该NodeManager运行AppMstr(最先运行的程序是AppMstr),运行起来AppMstr后,AppMstr会向ResourceManager注册并保持通信,这样我们才可以在控制台上看到该应用程序的任务执行情况,比如执行了百分之多少了。然后AppMstr根据自己的应用程序中任务情况(比如mapTask、reduceTask等任务)向ResourceManager申请资源,并监控这些任务的执行情况。
- 当AppMstr申请到资源后,会要求对应的各个NodeManager去启动容器执行任务。
- 一个应用程序中的多个任务可能是在多个节点上的多个容器中运行的,所以这些容器需要向AppMstr汇报自己的执行情况。比如在MapReduce中,mapTask/reduceTask等多个容器都需要向AppMstr容器汇报情况。各个任务是通过RPC协议汇报状态的,而用户也是通过RPC协议向AppMstr查询当前应用程序的执行情况。
- NodeManager定期向ResourceManager汇报自己本台节点上的资源使用情况及任务执行情况。
- 当应用程序执行完毕后,AppMstr会向ResourceManager注销自己并释放容器。
- YARN中的三种调度器:FIFO Scheduler、Capacity Scheduler、Fair Scheduler。默认使用Capacity Scheduler,也可以通过修改yarn-site.xml中的<name>yarn.resourcemanager.scheduler.class</name>来配置其他的调度器。
边栏推荐
- Active directory user logon Report
- Flutter series -flutter route management
- Cookie encryption 3+rpc solution
- 第八届 GopherChina 大会蓄势待发!
- Shell script explanation (II) -- conditional test, if statement and case branch statement
- Service实战:使用Service完成一个下载任务
- 结构型模式之代理模式
- Cluster, distributed and microservice concepts and differences
- 同花顺容易开户么?手机开户安全么?
- 同花顺好用么?手机开户安全么?
猜你喜欢

Thread pool: reading the source code of threadpoolexcutor

Dynamically changing the style of label elements in a loop

shell脚本详解(四)——循环语句之while循环和until循环(附加例题及解析)

远程访问及控制——SSH远程管理及TCP Wrappers 访问控制

Shell编程规范与变量

JSP connection MySQL total error

Cookie encryption 3+rpc solution

牛客网:判断是否为回文字符串
![K个一组翻转链表[链表拆解/翻转/拼装]](/img/70/fb783172fa65763f031e6bd945cbd9.png)
K个一组翻转链表[链表拆解/翻转/拼装]

Digital business cloud: build a digital supply chain system to enable enterprises to optimize and upgrade their logistics supply chain
随机推荐
[suggestions collection] common usage scenarios of message queue
Service实战:使用Service完成一个下载任务
RobotFramework 安装教程
加工制造业智慧采购系统解决方案:助力企业实现全流程采购一体化协同
wpa_ State machine migration of supplicant
std::enable_shared_from_this 错误:error: expected template-name before ‘<’ token
How to manage tasks in note taking software such as flowus and notation?
IPLOOK 成为 RedHat(红帽)业务合作伙伴
mysql数据库设计
同花顺难开户么?网上开户安全么?
Cluster, distributed and microservice concepts and differences
2022 operation of simulated examination platform for examination question bank of welder (elementary) special operation certificate
Shell script (V) -- function
Flutter series -flutter route management
Service practice: use service to complete a download task
Error in created hook: “TypeError: Cannot read property ‘tableId‘ of undefined“
贪心之区间问题(3)
Dynamically changing the style of label elements in a loop
实现领域驱动设计 - 使用ABP框架 - 解决方案概览
Zynq UltraScale + RFSoC ZCU111 RF时钟树学习 1