博客内容来自我啃的Hadoop权威指南,记录一下帮助自己理一下思路
Apache YARN是hadoop的集群资源管理系统,最初被引进hadoop2 是为了改善MapReduce的实现,但它具有足够的通用性,同样可以支持其他的分布式计算模型。
YARN的运行机制
YARN通过两类长期运行的守护进程提供自己的核心服务:管理集群资源的资源管理器(Resource manager)和运行在集群中所有节点上且能够启动和监控容器的节点管理器(node manager)。容器用于执行特定应用程序的进程,每个容器都有资源限制(CPU、内存等)。
YARN运行一个应用的过程如图
为了在YARN上运行一个应用,要经过一下几个步骤:
- 客户端练习资源管理器,要求它运行一个application master 进程。
- (2a 和 2b)资源管理器找到一个能够在容器中启动application master的节点管理器。application master 运行起来后能做什么依赖于应用本身,有可能是在所处的容器中简单地运行一个计算,并将结果返回给客户端,也有可能执行步骤3、4
- 想资源管理器请求更多的容器
- 运行下一个分布式计算
注意,yarn本身不会为应用的各部分(客户端、master和进程)彼此间通信提供任何手段,大多数重要的 yarn 应用使用某种形式的远程通信机制(如hadoop 的 RPC 层)来向客户端传递状态更新和返回结果,但是这些通信机制都是专属于各个应用的。