Yarn架构简介
Hadoop YARN(Yet Another Resource Negotiator)是一个分布式的资源管理系统,用于提高分布式的集群环境下的资源利用率,这些资源包括内存、IO、网络、磁盘等。其产生的原因是为了解决原MapReduce框架的不足。最初MapReduce的committer还可以周期性的在已有的代码上进行修改,可是随着代码的增加以及原MapReduce框架设计的不足,在原MapReduce框架上进行修改变得越来越困难,所以MapReduce的committer决定从架构上重新设计MapReduce,使下一代的MapReduce(MRv2/YARN)框架具有更好的扩展性、可用性、可靠性、向后兼容性和更高的资源利用率,以及能支持除了MapReduce计算框架外的更多的计算框架。YARN(MR v2) 在 MR v1 的基础上发展而来,将资源管理和任务控制解耦,分别由 ResourceManager 和 ApplicationMaster 负责,是一个两层调度系统。
基本概念:
- ResourceManager:以下简称RM。YARN的中控模块,负责统一规划资源的使用。它接收来自NM的汇报,建立AM,并将资源派送给AM。
- NodeManager:以下简称NM。YARN中的资源节点模块,负责启动管理container。
- ApplicationMaster:以下简称AM。YARN中每个应用都会启动一个AM,负责向RM申请资源,请求NM启动container,并告诉container做什么事情。
- Container:对任务运行环境的抽象。它描述一系列信息:任务运行资源(包括节点、内存、CPU)、任务启动命令、任务运行环境。
MapReduce和Yarn的关系

作用:
Yarn负责集群资源的管理及调度。
MapReduce负责数据的计算过程。
区别:
Yarn是一个服务,时时刻刻在运行着。
MapReduce是个静态的框架,就像程序一样,不用时无需启动。
而YARN 作为 Hadoop 的资源管理框架,提供了一个通用的资源调度平台,支持多种计算框架(如 MapReduce、Spark、Tez 等)。