YARN架构设计与实现原理
文章平均质量分 85
阿松0311
这个作者很懒,什么都没留下…
展开
-
MRv2中的数据处理引擎
MRAppMaster仍采用了MRv1中的数据处理引擎,分别由MapTask和Reduce Task完成Map任务和Reduce 任务,但MRv2做了优化,主要是在shuffle阶段。(1)Map端:用Netty代替JettyMRv1中,TaskTracker采用了Jetty服务器处理来自各个Reduce Task的数据请求,Jetty性能较低,所以改用了Netty。(2)Reduce端:批拷贝MRv1中,shuffle的时候Reduce Task会为每个数据分片建立一个专门的HTTP连接,即原创 2021-12-06 14:03:37 · 946 阅读 · 0 评论 -
MapReduce On Yarn
MRAppMaster基本架构MRAppMaster是MR的ApplicationMaster实现,使得MR应用程序可以直接运行在YARN之上,在YARN上,MRAppMaster负责管理MR作业的生命周期,包括作业管理、资源申请与再分配、Container启动与释放、作业恢复等。ContainerAllocator:和RM通信,为MR作业申请资源。周期性和RM通信,RM通过心跳应答的方式为之返回已经分配的Container列表、完成的Container列表等信息ClientService:是一原创 2021-12-06 13:06:55 · 182 阅读 · 0 评论 -
NodeManager概述
架构NodeStatusUpdate:NM和RM通信的唯一通道,NM启动时,该组件和RM注册,汇报节点上的总可用资源;之后,该组件周期性和RM通信,汇报各个Container的状态更新,包括节点上正运行的Container、已完成的Container等信息,同时RM会为之返回待清理的Container列表、待清理应用程序列表、诊断信息、各种Token。ContainerManager:ContainerManager由多个子组件构成,协同管理运行再该节点上的所有Container。RPC原创 2021-12-05 17:11:06 · 967 阅读 · 0 评论 -
YARN资源调度
资源调度模型(1)双层资源调度模型YARN采用双层资源调度模型,第一层,RM中的资源调度器将资源分配给各个AM,第二层,AM将资源分配给内部的任务。YARN的资源分配是异步的,资源调度器将资源分配给一个应用程序后,不会立刻push到AM,而是放到缓冲区里,等待AM通过周期性的心跳主动来取,即YARN采用了pull-based通信模型。YARN资源分配过程:NM通过周期性心跳汇报节点信息RM为NM返回一个心跳ack,包括需要释放的Container列表等信息。RM收到NM的信息后,触发一个N原创 2021-12-05 15:44:52 · 2328 阅读 · 0 评论 -
YARN的容错机制
MRv1中采用的Master/Slave架构,存在单点故障问题,作为分布式系统,YARN具备高容错性,各个服务组件的容错机制如下:ApplicationMaster容错:RM监控AM的运行状态,一旦发现它运行失败或者超时,就会重新分配资源并启动它,启动之后AM内部的状态如何恢复由自己保证,比如MRAppMaster在作业运行过程中将状态信息动态记录到HDFS上,一旦出现故障重启后,它能够从HDFS读取并恢复之前的运行状态,减少重复计算带来的开销。NodeManager容错:NM超时没有心跳,则RM认为原创 2021-12-04 18:07:13 · 1516 阅读 · 0 评论 -
ResourceManager剖析——ApplicationMaster、NodeManager、Application管理
ApplicationMaster管理启动流程:用户向RM提交应用程序,RM收到后,先向资源调度器申请用以启动AM的资源,申请到后再由ApplicationMasterLauncher与对应的NM通信,从而启动应用程序的ApplicationMasterAM启动完成后,ApplicationMasterLaunch会通过事件的形式,将刚刚启动的AM注册到AMLivelinessMonitor,以启动心跳监控。AM启动后,向ApplicationMasterService注册,将自己的host、端原创 2021-12-04 16:45:13 · 1051 阅读 · 0 评论 -
ResourcManager剖析——概述
基本职能RM通过两个RPC协议与NM和AM交互。ResouceTracker:NM通过该RPC协议向RM注册、汇报节点健康状况和Container运行状态、并领取RM下达的命令。该RPC中,RM是Server,NM是Client,NM是主动向RM发起请求的,并领取下达给自己的命令。ApplicationMasterProtocol:AM通过该协议向RM注册、申请资源和释放资源,AM是Client,RM是Server。ApplicationClientProtocol:客户端通过该协议向RM提交应原创 2021-12-04 15:42:55 · 155 阅读 · 0 评论 -
YARN基础库
基础库:Protocol BuffersApache AvroRPC库服务库和事件库状态机库第三方开源库Protocol Buffers结构化数据存储格式,用于结构化数据序列化/反序列化。编写一个Protocol Buffers应用需要三步:定义消息格式文件,通常以proto作为扩展名使用Google提供的Protocol Buffers编译器生成特定语言的代码文件使用Protocol Buffers库提供的API编写应用程序Apache Avro本身是个序列化框架,同时原创 2021-12-04 14:41:17 · 159 阅读 · 0 评论 -
YARN设计理念与基本架构
设计思想第一代和第二代MapReduce的差距在于,下一代将JobTracker的两个主要功能,资源管理和作业控制,拆分成两个独立的进程。资源管理进程与具体应用程序无关,且每个作业控制进程只负责管理一个作业。实现了将原有JobTracker中与应用程序相关和无关的模块分开,减轻了JobTracker负载,也使得Hadoop支持更多的计算框架。下一代MapReduce实际上衍生出了一个资源统一管理平台YARN,使得Hadoop不止支持MapReduce,还可以融入其他更多计算框架。基本架构总体上仍是原创 2021-12-03 21:01:30 · 1690 阅读 · 0 评论