什么是YARN
Apache YARN 全称是Yet Another Resource Negotiator,它 是 hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配。
通俗来讲YARN就是一个集群管理器,它可以统筹多台服务器上的资源,根据业务需要向特定应用分配资源(资源是指处理器和内存等)。
如上图所示,HDFS处于YARN之外,为YARN提供应用程序所需要的数据,而YARN中可以部署很多应用,包括MapReduce HBase Spark等。
上图中展示了YARN中各个成员在整个集群中的工作:
Resource manager是大总管,掌管一切资源,如果有任务提交,Resource manager就会为任务分配资源。
Container是资源分配的最小单元,Resource manager所分配的计算资源都被表示为一个Container。所有的小任务都会在Container中运行。
ApplicationMaster是单个应用的管理者,它只能管Resource manager分配给他的Container。应用执行都是在Container中,ApplicationMaster的职责具体如下:
- 根据应用的运行状态来决定动态计算资源需求;
- 向
ResourceManager
申请资源,监控申请的资源的使用情况; - 跟踪任务状态和进度,报告资源的使用情况和应用的进度信息;
- 负责任务的容错。
NodeManager是小总管,主要负责该节点内所有容器的生命周期的管理,监视资源和跟踪节点健康。它的具体任务如下:
- 启动时向
ResourceManager
注册并定时发送心跳消息,等待ResourceManager
的指令; - 维护
Container
的生命周期,监控Container
的资源使用情况; - 管理任务运行时的相关依赖,根据
ApplicationMaster
的需要,在启动Container
之前将需要的程序及其依赖拷贝到本地。