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内部架构图
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图是我将官网上的架构图进行了总结