节点管理器(Node Manager)运行在集群中的一个节点上,集群中每个节点都会运行一个自己的节点管理器。它是作为一个从属服务(slave service):它接受来自另外一个称为资源管理器的组件的请求,然后分配容器给应用程序。它还负责监控和汇报资源使用情况给资源管理器。在Hadoop集群中,节点管理器与资源管理器一起协同工作,负责管理分配Hadoop系统资源。资源管理器是一个Hadoop集群的全局组件,节点管理器作为各个节点的代理来负责管理集群中每个节点的健康情况。节点管理器的任务如下:
接受来自资源管理器的请求,为作业的执行分配容器。
与资源管理器交换信息,确保整个集群的稳定运行。资源管理器依靠各个节点管理器的汇报来跟踪整个集群的健康状况,节点管理器作为代理任务来监控和管理本节点的健康状况。
管理每个已启动的容器的整个生命周期。
每个节点的日志管理。
运行各种YARN应用程序使用的辅助服务(auxiliary service)。举个例子,在目前的Hadoop系统实现中,MapReduce程序中的Shuffle服务就是一个辅助服务。
当一个节点启动,它会向资源管理器注册,并且告诉资源管理器有多少资源(最终可分配给容器使用的资源)可用。在节点运行期间,节点管理器和资源管理器会协同工作,不停地更新系统资源状态,保证集群资源有效地、优化地利用。
节点管理器仅对抽象出来的容器进行管理,而对单个应用程序或者应用程序类型的情况一无所知。负责管理这部分内容的是一个被称为应用程序管理器(Application Master)的组件。在我们介绍应用程序管理器之前,先简单介绍一下资源管理器。