Hadoop2.0,YARN也采用了Master/Slave结构。
Master-ResourceManager:负责整个集群资源的管理与调度,主要这么几个功能包括:
处理来自客户端的请求
启动管理ApplicationMaster,接收来自ApplicationMaster的资源申请
管理和接受来自NodeManager的资源汇报信息
Slave-NodeManager:负责管理Hadoop集群中单个计算节点,主要
从ApplicationMaster接收有关管理Container的命令(启动,停止Container等)
向ResourceManager汇报各个Container运行状态。
注:Container是YARN中资源的抽象(就是封装了类似于某个机器上1个cpu,2g内存等;然后AM申请到这些资源,就到某台机器上运行任务)
运行过程
简版:
用户提交应用程序到RM上
RM分配一个Container启动AM
AM向RM注册,并开始申请资源,以在NM上启动任务
NM启动任务,并且各个任务向AM汇报状态
所有任务完成,AM向RM注销自己
详版:
用户将应用程序提交到ResourceManager上;
ResourceManager为该应用程序分配第一个Container,并与对应的NodeManager通信并在这个Container中启动应用程序的ApplicationMaster;
ApplicationMaster向ResourceManager注册自己并与之通信(用户就可以通过ResourceManager查看程序状态),为内部要执行的任务申请资源,申请到资源后则与对应的NodeManager通信,以启动内部任务,AM并监听这些任务。
NodeManager为任务设置好运行环境(包括环境变量,jar包等),将命令写到脚本中并通过脚本启动任务。
各个任务通过某个RPC协议向ApplicationMaster汇报自己的运行状态。
应用程序运行完成后,ApplicationMaster则向ResourceManager注销自己。
参考:董的博客
2015年10月22日晚