产生原因
对于节点数超出4000的大型集群,第一代的MapReduce系统开始面临扩展性的瓶颈。2010年雅虎团队开始设计下一代的MapReduce,由此YARN(Yet Another Resource Negotiator)应运而生。
框架
两个独立的守护进程:
资源管理器ResourceManager:管理集群上资源使用
应用管理器ApplicationMaster:管理集群上运行任务生命周期
实体:
1)Job:提交MR作业的客户端;
2)ResourceManager:Yarn资源管理器,负责协调集群上计算资源的分配;
3)MRAppMaster:负责协调运行MR作业的任务;
4)NodeManager:Yarn节点管理器,负责启动和监视集群中机器上的计算容器;
5)HDFS:分布式文件系统,用来与其他实体间共享作业文件。
思路:
应用服务器与资源管理器协商集群计算资源(容器)。在这些容器上运行特定应用程序的进程。容器由集群节点上运行的节点管理器监视,以确保应用程序使用的资源不会超过分配给它的资源。
1) 客户端提交Job给ResourceManager;
2) ResourceManager接收到客户端提交的MapReduce程序后,把程序交给某个NodeManager节点,随后在这个NodeManager节点上启动一个进程“ MRAppMaster”(应用的每个实例有一个专用的ApplicationMaster),ResourceManager分配Container容器资源给ApplicationMaster;
3) MRAppMaster首先向ResourceManager注册,这样用户可以通过ResourceManager节点查看应用程序的运行状态,随后MRAppMaster通过RPC协议向ResourceManager节点申请资源并领取资源;
4) MRAppMaster申请到Container资源后,与对应的NodeManager节点进行通信,让NodeManager启动Container容器运行MapReduce程序;
5) NodeManager节点启动完任务后(mapper+reducer),各个任务将通过RPC协议向ApplicationMaster节点报告自己的状态和进度,以让ApplicationMaster节点随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务(定时“心跳”汇报自己的状态及Container容器的运行状态);
6)MapReduce程序运行完成后,MRAppMaster节点向ResourceManager节点注销并关闭自己,资源被回收。到此任务运行完毕。
运行机制