搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
寸_铁
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
边缘计算与智能能源:创新的应用与未来趋势
2
WAIC2023|华院计算成功举办“认知世界 智创未来”主题论坛 中国信通院认知智能研究报告及华院认知智能引擎平台正式发布_2023waic 认知智能改变世界
3
自然语言处理的研究前沿
4
AI绘画天花板工具-在线使用comfyUI方法!无需部署!(漫画线稿上色)
5
linux centos7.9升级openssh9.8过程
6
【Python】解决Python报错:ModuleNotFoundError: No module named ‘requests‘_import requests modulenotfounderror: no module nam
7
大数据:Hadoop分布式文件系统——HDFS_hdfs是依据哪个文件系统设计的
8
【细节讲解】GAN: walking in latent space 如何探索潜在空间?结合DCGAN论文_潜在空间插值
9
物联网实战--入门篇之(六)嵌入式-WIFI驱动(ESP8266)_esp8266连接wifi
10
【华为 ICT & HCIA & eNSP 习题汇总】——题目集6_在osi参考模型中,能够完成端到端差错检测和流量控制
当前位置:
article
> 正文
Hadoop - YARN ResourceManager 剖析_hadoop yarn resourcemanager
作者:寸_铁 | 2024-08-18 23:18:01
赞
踩
hadoop yarn resourcemanager
一概要
YARN采用了Maser/Slave结构,其中Master实现为ResourceManager,负责整个集群的资源管理与调度; Slave实现为NodeManager,负责单个节点的资源管理与任务启动。
ResourceManager是整个YARN集群中最重要的组件之一,它的设计直接决定了系统的可扩展性、可用性和容错性等特点,它的功能较多,包括ApplicationMaster管理(启动、停止等)、NodeManager管理、Application管理、状态机管理等。
在YARN中,ResourceManager负责集群中所有资源的统一管理和分配,它接受来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(即ApplicationMaster)。
注:ResourceManager主要完成一下几个功能:
1.与客户端交互,处理来自客户端的请求。
2.启动和管理ApplicatinMaster,并在它运行失败时重新启动它。
3.管理NodeManager,接受来自NodeManager的资源管理汇报信息,并向NodeManager下达管理命令(比如杀死Contanier)等。
4.资源管理与调度,接收来自ApplicationMaster的资源申请请求,并为之分配资源(核心)。
二 ResourceManager 内部结构
ResourceManager 内部组件
2.1.用户交互模块
RM分别针对普通用户(ClientRMService)、管理员(AdminService)和Web提供了三种对外服务。普通用户和管理员这两类请求通过两个不同的通信通道发送给RM,是因为要避免普通用户请求过多导致管理员请求被阻塞而迟迟得不到处理。
2.2 NodeManager 管理模块
NodeManagerLivelinessMonitor
监控NodeManager是否活着,如果一个NodeManager在一定时间内(10min)未回报心跳信息,则认为它死掉了,需将其从集群中移除。
NodeListManager
管理exclude和include节点列表,维护正常节点和异常节点列表。
ResourceTrackerService
处理来自NodeManager的请求,主要包括注册和心跳两种请求。注册是NodeManager启动时发生的行为,请求包中包含节点的ID、可用资源的上限等信息;心跳是周期性的行为,包含各个Container运行状态,运行的Application列表、节点健康状况等信息,作为请求的应答,ResourceTrackService可为NM返回释放Container列表、Application列表等信息。
2.3 ApplicationMaster 管理模块
AMLivelinessMonitor
监控ApplicationMaster是否还活着,如果一个ApplicationMaster在一定时间(10min)内未汇报心跳信息,则认为它死掉了,它上面的所有正在运行的Container将被设置为失败状态,而ApplicationMaster本身会被重新分配到另一个节点上(默认尝试运行2次)。
ApplicationMasterLaucher
与某个NM 通信,要求它为某个应用程序启动ApplicationMaster。
ApplicationMasterService
负责处理来自ApplictionMaster的请求,请求主要包括注册、心跳和清理三种。
注册是AM 启动时发生的行为,注册请求包中包含AM启动节点,对外的RPC端口号和tracking URL等信息。
心跳是周期性的行为,汇报信息包括所需资源的描述、待释放的Container列表、黑名单列表,ApplicationMasterService则为之返回新分配的Container、失败的Container、待抢占的Container列表等信息。
清理是应用程序结束时发生的。ApplicationMaster向RM发送清理应用程序的请求,以回收资源和清理各种内存空间。
2.4 Applicatin 管理模块
ApplicationACLsManager
负责管理应用程序的访问权限,包含两部分权限:查看权限和修改权限。查看权限主要用于查看应用程序基本信息,而修改权限则主要用于修改应用程序的优先级、杀死应用程序等。
RMAppManager
负责管理应用程序的启动和关闭。ClientRMService收到来自客户端的提交应用程序的请求后,将调用函数RMAppManager#submitAppication创建一个RMApp对象,它将维护整个应用程序生命周期,从开始运行到最终结束。
注:RM不负责ApplicationMaster内部任务的执行以及容错,只负责资源的分配和状态的跟踪。
ContainerAllocationExpirer
当一个ApplicationMaster获得一个Container后,YARN不允许ApplicationMaster长时间不对其使用,这样会降低整个集群的利用率。当ApplicationMaster收到RM新分配的一个Container后,必须再一定的时间内(默认为10min)内在对应的NM上启动该Container,否则RM将强制回收该Container,而一个已经分配的Container是否被回收则是由ContinerAllocationExpier决定和执行的。
2.5 状态机管理模块
负责维护应用程序的整个运行周期,包括维护同一个Application启动的所有运行实例的生命周期(RMApp)、维护一次运行尝试的整个生命周期(RMAppAttempt)、维护一个Contaner的运行周期(RMContainer)、维护一个NodeManager的生命周期(RMNode)。
注:1. RMContainer维护了一个Container的运行周期,包括从创建到运行的整个过程。RM将资源封装成Container发送给应用程序的ApplicationMaster,而ApplicationMaster则会在Container描述的环境中启动任务,因此,从这个层面上讲,Container和任务的生命周期是一致的(目前YARN不支持Container的重用,一个Container用完后会立刻释放,将来可能会增加Container的重用机制)。
2. RMNode状态机是ResourceManager中用于维护一个节点生命周期的数据结构,它的实际是RMNodeImple类,该类维护了一个节点状态机,记录了节点可能存在的各个状态。例如,当一个应用程序执行完成时候,会触发一个CLEANUP_APP事件,以清理应用程序占用的资源。当一个Container执行完成时候,会触发一个CLEANUP_CONTAINER事件,以清理Container占用的资源。
3.在YARN中,根据应用程序需求,资源被切分成大小不同的资源块,每份资源的基本信息由Container描述,而具体的使用状态追踪则是由RMContainer完成。RMContainer是ResoueceManager中用于维护一个Container生命周期的数据结构,它的实现是RMContianerImpl类,该类维护了一个Container状态机,记录了一个Container可能存在的各个状态以及导致状态转换的事件,当某个事件发生的时候,RMContainerImpl会根据实际情况进行Container状态的转移,同时触发一个行为。
4. ApplicationMaster通过RPC函数ApplicationMasterProtocol#allocate拉取分配给它的Container后,将与对应的NodeManager通信以启动这些Container,接着NodeManager通过心跳机制将这些Container状态汇报给ResourceManager,最终ResourceManager将这些Container状态置为RUNNING.
5.当出现以下几种情况时,将导致Container置为KILLED状态。
a.资源调度器为了保持公平性或者更高优先级的应用程序的服务质量,不得不杀死一些应用占用的Container以满足另外一些应用程序的请求。
b.某个NodeManager在一定时间内未向ResourceManager汇报心跳信息,则ResourceManager认为它死掉了,会将它上面所在正在运行的Container状态设置为KILLED。
c.用户(使用API 或者 Shell命令)强制杀死一个RMAppAttempImpl实现时,会导致它所用的Container状态设置为KILLED。
2.6 安全管理模块
YARN自带了非常全面的权限管理机制,一般而言,系统安全机制由认证和授权两大部分组成。认证就是简单的对一个实体的身份进行判断;授权则是向实体授予对数据资源和信息访问权限的决策过程。
Hadoop认证机制的实现同时采用了Kerberos和Token两种技术,其中Kerberos用于用户与服务与服务之间的认证,他是一种基于可信任的第三方服务的认证机制,在高并发情况下,效率低。
2.7 资源分配模块
ResourceScheduler是资源调度器,它按照一定的约束条件(比如队列容量限制等)将集群中的资源分配给各个应用程序,当前主要考虑内存和CPU资源。ResourceScheduler是一个插拔式模块,YARN自带了一个批处理资源管理器-FIFO和两个多用户调度器--Fair Scheduler和Capacity Scheduler。
三 常见行为分析
3.1 ApplicationMaster 超时
AM向RM注册后,必须周期性通过RPC函数ApplicationMasterProtocol#allocate向ResrouceManager汇报心跳以表明自己还活着。如果一段时间按(默认是10min)内未汇报心跳,则ResourceMananger宣布它死亡,进而导致应用程序重新运行或者直接退出。
3.2 NodeManager 超时
NodeManger启动后通过RPC函数ResourceTracker#registerNodeManager向RM注册,之后将被加入到NMLivenessMonitor中进行监控。它必须周期性通过RPC函数ResourceTracker#nodeHeartBeat向RM汇报心跳以表明自己还活着,如果一段时间内(默认是10min)内为汇报心跳,则RM宣布它已经死亡,所以正在运行在它上面的Container将被回收。
3.3 Container 超时
在YARN中,存在两种类型的Container,分别是用于运行ApplicationMaster的Container(AM Container)和运行普通任务的Container(简称为 "普通Container")。第一种Container超时将导致整个Application运行失败,而第二种Container超时则会触发一次资源回收。而要注意的是,第二种Container超时导致任务运行失败后,YARN不会主动将其调度到另一个节点上运行,而是将状态告诉应用程序的ApplicationMaster,由它决定是否重新申请资源或者重新执行。
注:RM只负责资源的分配和回收以及应用程序状态的维护,它不会负责当任务失败的时候进行重启Container,即不负责容错处理。
3.4 AM超时
RMAppImpl收到超时事件后,如果未超过用户设置的运行次数上限,将尝试启动一个新的RMAppAttemptImp或者直接宣布该应用程序运行失败;ResourceScheduler收到事件后,会清理该应用相关信息。
四 高可用
Hadoop1.0中,HDFS和MapReduce均采用了Master/Slave结构,这种结构虽然具有设计非常简单的有点,但同时也存在Master单点故障问题。由于存在单点故障问题的系统不适合在线应用场景,这使得Hadoop在相当长时间内仅用于离线存储和计算。
在Hadoop2.0中,HDFS同样面临着单点故障问题,但由于每个MapReduce作业拥有自己的作业管理组件,因此不再存在单点故障问题,新引入的资源管理系统YARN也采用了Master/Slave结构 ,同样出现了单点故障问题。
在 Master/Slave架构中,为了解决Master的单点故障问题(也成为高可用问题,即HA,High Availability),通常采用
热备方案,即集群中存在一个对外服务的Active Master和若干个处于就绪状态的Standy Master,一旦Active Master出现故
障,立即采用一定的侧率选取某个Standy Master转换为Active Master以正常对外提供服务。
HDFS 和 YARN均采用了基于共享存储的HA 解决方案,即Active Master不断将信息写入一个共享存储系统,而Standy Master则不断读取这些信息,以与Active Master的内存信息保持同步。当需要主备切换时,选中Standby Master需先保证信息完全同步后,再将自己的角色切换至Active Master。
Zookeeper是一个针对大型文件分布式系统的可靠协调系统,提供的功能包括统一命名服务、配置管理、集群管理、共享锁和队列管理等。需要注意的是Zookeeper设计目的并不是数据存储,但它的确可以安全可靠地存储少量数据以解决分布式环境下多个服务之间的数据共享服务。
五 小结
在YARN中,ResourceManager扮演管理者角色,它负责整个集群的管理与调度。ResourceManager内部有多个功能管理模块,主要包括:ApplicatoinMaster管理(启动和停止)、NodeManager管理、Application管理、状态机管理等。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/寸_铁/article/detail/999659
推荐阅读
article
Windows
下安装Hadoop(引导版)_
apache
-
hadoop
-
3.1
.0-
winutils
...
本环境只作为测试环境的搭建和学习使用。_
apache
-
hadoop
-
3.1
.0-
winutils
apache
-hadoo...
赞
踩
article
sheng的学习笔记-
hadoop
,
MapReduce
,
yarn
,
hdfs
框架原理_将winutil...
hadoop
,mapreduce,
yarn
,
hdfs
_将
winutils
.
exe
和
hadoop
.
dll
放到system3...
赞
踩
article
hadoop
windows
安装
_
hadoop
win
安装
...
jdk
安装
注意,jdk的
安装
目录一定不要带空格。如果带了空格,在后面的
hadoop
,spark
安装
时会导致他们不识别j...
赞
踩
article
windows
下
hadoop
的
部署和使用_
windows
hadoop
...
至此,
hadoop
配置完成,hdfs负责分布式存储,mapreduce负责分布式计算,yarn负责资源调度,基本
的
(伪)...
赞
踩
article
windows
安装
Hadoop
,启动
yarn
报错:
YarnRuntimeException
: Per...
在Windows10环境下安装
Hadoop
时,用户遇到Yarn启动错误,原因是权限设置不正确。解决办法是切换到本地管理员...
赞
踩
article
解决配置安装
hadoop
没有
start
-
dfs
.
sh
、
stop
-
dfs
.
sh
、
start
-yar...
在对Hadoop环境进行权限设置时,用户发现没有
start
-
dfs
.
sh
等必需的启动脚本。文章提供了通过find命令查找...
赞
踩
article
在
Windows
中安装
Hadoop
出现
YarnRuntimeException
: Permissio...
我当前是在
Windows
下安装
Hadoop
,但是出现了下面情况
YarnRuntimeException
: Permiss...
赞
踩
article
windows10
下
Node
的
yarn
和
Hadoop
的
yarn
冲突
解决方案
_
where
yarn
...
1.首先在控制台中输入
where
yarn
,查看
yarn
位置,如下图所示,前两个是hadoop的
yarn
位置,后面的是n...
赞
踩
article
Hadoop
windows
本地
环境
安装_怎么查看自己电脑上
hadoop
环境
变量
是否正常...
hadoop
使用java编写,所以
windows
安装和java一样也需要配置
环境
变量
。一、下载所需文件JDK下载地址,j...
赞
踩
article
Hadoop
启动
yarn
报错_●
hadoop
-
yarn
-
resourcemanager
.servi...
在尝试启动
Hadoop
的YARN服务时遇到问题,错误提示为无法获取'/opt/module/
hadoop
-3.1.1/l...
赞
踩
article
hadoop
伪
分布式
web
浏览器
访问不到
yarn
_
hadoop
无法
找到
yarn
...
hadoop
的配置文件中的不要填写localhost,都填写主机名,用hostname可以打印出主机名_
hadoop
无...
赞
踩
article
解决
HDFS
YARN
页面
访问
失败_可以
访问
yarn
集群
访问
不了
hdfs
集群
...
防火墙解决方案:关闭firewall:systemctl stop firewalld.service拓展知识:停止fi...
赞
踩
article
hadoop
无法访问
hdfs
(
50070
,
8088)的
web
界面...
启动集群成功后,[root@localhost
hadoop
-2.7.2]# sbin/yarn-daemon.sh s...
赞
踩
article
Hadoop
安装后验证_验证已安装的
hadoop
平台上的
hdfs
、
yarn
和
mapreduce
服务...
准备工作格式化
hdfs
:
hadoop
namenode -format ,这是一个过时的命令,不过也可以使用启动hado...
赞
踩
article
云计算与大数据入门
实验
二 —— 熟悉
常用
的
HDFS
(
Hadoop
)
操作
...
该
实验
旨在让学习者理解
HDFS
在
Hadoop
架构中
的
作用,通过Shell命令和JavaAPI熟练进行
HDFS
的
文件上传、...
赞
踩
article
大数据-82
Spark
集群
模式
启动
Hadoop
HDFS
Spark
与
HelloWorld
...
上节完成了
Spark
的环境配置,
集群
配置,并且通过分发把服务分发到了别的服务器上等内容。本节我们对
集群
进行
启动
和测试,需...
赞
踩
article
Spark
系列
-
5
、
Spark
的
部署
方式之
Spark
on
YARN
...
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。大数据
系列
文章目...
赞
踩
article
大
数据
平台
搭建
(
hadoop
+
spark
)
_
hadoop
与
spark
搭建
数据
分析
工具...
一.基本信息1. 服务器基本信息主机名ip地址安装服务
spark
-master172.16.200.81jdk、hado...
赞
踩
article
Java
大
数据处理
实践:使用
Hadoop
和
Spark
进行分析_java
hadoop
大数据分析...
1. 编写
Spark
程序:与
Hadoop
的MapReduce程序类似,我们需要编写一个继承自
Spark
的Transfor...
赞
踩
article
大数据:平台搭建(
hadoop
+
spark
+
zeppelin
)(一)_
启动
hdfs
集群
,
启动
spar...
随着信息化时代的加深,国家人力资源和社会保障部新规定了13个新型职业,大数据工程技术人员赫然在列,下面我将从一个初学者的...
赞
踩
相关标签
windows
hadoop
大数据
yarn
hdfs
mapreduce
java
mysql
分布式
linux
hadoop本地安装