vlambda博客
学习文章列表

YARN技术交底归纳总结!先收藏了会用到的




 

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。




通过阅读01和02的官网文档,总结出了03和04的job提交流程图(03/04图均为自己总结,建议转载请标明原文链接)

01 NodeManger

02 ResourceManger

03 YARNjob提交流程

04 SPARK-on-YARNjob提交流程(client)






01



NodeManger




概述

NodeManager是运行在单个节点上的代理,它需要与应用程序的的ApplicationMaster和集群管理者ResourceManager交互: 从ApplicationMaster上接收有关Container的命令并执行之(比如启动,停止Container); 向ResourceManager汇报各个Container运行状态和节点健康状况,并领取有关Container的命令(比如清理Container)执行之

NodeManager是YARN中单个节点上的代理,它管理Hadoop集群中单个计算节点,功能包括与ResourceManager保持通信,管理Container的生命周期,监控每个Container的资源使用(内存,CPU等)情况,追踪节点健康状况,管理日志和不同应用程序用到的附属服务


NodeManager基本职能

NodeManager需通过两个RPC协议与ResourceManager服务和各个应用程序的ApplicationMaster交互

02


ResourceManger


ResourceManager基本职能和内部架构

YARN也采用了Master/Slave结构,其中,Master实现为ResourceManager,负责整个集群资源的管理与调度;Slave实现为NodeManager,负责单个节点的资源管理与任务启动

ResourceManager是整个YARN集群中最重要的组件之一,它的设计直接决定了系统的可扩展性、可用性和容错性等特点,它的功能较多,包括ApplicationMaster管理(启动、停止等)、NodeManager管理、Application管理、状态机管理等

ResouceManager内部架构图

YARN技术交底归纳总结!先收藏了会用到的


03


YARNjob提交流程


04


SPARK-on-YARNjob提交流程

Client模式


简述:

YARN Client模式下,Driver在任务提交的本地机器上运行Driver启动后会和ResourceManager通讯申请启动ApplicationMaster,随后ResourceManager分配container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher,只负责向ResourceManager申请Executor内存。

ResourceManager接到ApplicationMaster的资源申请后会分配container,然后ApplicationMaster在资源分配指定的NodeManager上启动Executor进程,Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。

04图是我将官网上的架构图进行了总结