YARN架构:
1)ResourceManager:RM
整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度。
处理客户端的请求:提交作业,杀死作业
2)NodeManager:NM
整个集群中有多个,负责自己本身节点资源管理和使用。
定时向RM汇报本节点的资源使用情况。
接收并处理来自RM的各种命令:启动Container
3)ApplicationMaster:AM
每一个应用程序对应一个:spark,MR... 负责应用程序的管理
为应用程序向RM申请资源(core,memory)分配给内部task
需要与NM通信:启动/停止task
4)Container
封装了CPU、Memory等资源的一个容器
是一个任务运行环境的抽象
5)Client
提交作业
查询作业运行进度
杀死作业
Hadoop1.x和2.x的区别:
MapReduce 1 中,有两类守护进程控制着作业执行过程:一个jobtracker和一个或多个tasktracker,jobtracker通过调度tasktracker上运行的任务来协调所有运行在系统上的作业。
tasktracker在运行任务的同时将运行进度报告给jobtracker,jobtracker有此记录着每项作业任务的整体进度,如果其中一个任务失败,则jobtracker可以在另一个tasktracker节点上重新调度该任务。
在MapReduce 1中jobtracker同时负责作业调度和任务进度监控。而YARN中,这些职责是由不同的实体担负的。
YARN的优势:
1. 可扩展性:
与MapReduce 1 相比,Yarn可以在更大规模的集群上运行,因为MapReduce 1的瓶颈源自于jobtracker必须同时管理作业和任务这一事实,
而Yarn中一个应用的实例都对应着一个专门的application master,该进程在应用的持续期间运行。
2.可用性:
当服务守护进程失败时,通过为另一个守护进程复制接管工作所需的状态,以便其继续提供服务,从而可以获得高可用性。
然后jobtracker中大量快速变化的复杂状态,使得改进jobtracker服务获得高可用性非常困难。但在yarn中,高可用性成为了一个分而治之的问题。
3.多租户:
yarn最大的优点在于向MapReduce以外的其他类型分布式应用开放了hadoop,MapReduce仅仅是许多Yarn应用中的一个。