YARN

YARN,全称Yet Another Resource Negotiator,是Hadoop中的一个核心组件。它是Hadoop分布式文件系统(HDFS)和MapReduce编程模型之间的桥梁,允许应用程序以高效的方式在集群中动态申请和释放资源。 YARN的主要目标是为应用程序提供一个集中的资源管理系统,该系统能够动态地分配和管理集群中的计算资源,从而实现更高效、更具可扩展性的分布式计算。 YARN的核心组件包括: 1. **资源管理器ResourceManager**:它是YARN中的主控节点,负责整个集群的资源管理和调度。它维护了一个资源池,用于存放各个应用程序的申请和释放的资源。ResourceManager还负责将应用程序的请求转发给合适的NodeManager,以协调集群中的计算资源。 2. **节点管理器NodeManager**:每个节点上都有一个NodeManager,它负责管理该节点的资源,包括但不限于内存、CPU和磁盘等。NodeManager会定期向ResourceManager报告节点的资源使用情况,以便ResourceManager能够进行资源的动态分配。 3. **应用程序管理器ApplicationMaster**:每个应用程序在YARN上运行时,都会创建一个ApplicationMaster。这个应用程序Master负责协调应用程序的多个任务,以及与ResourceManager和NodeManager进行通信,以申请和释放资源。应用程序Master还会与每个任务所在的NodeManager通信,监控任务的执行情况,并在必要时重新分配资源。 YARN的工作流程通常如下: 1. **应用程序提交**:应用程序首先提交给ResourceManager,ResourceManager会检查应用程序的资格,并为其分配唯一的应用ID。 2. **资源申请**:一旦应用程序获得审批,ResourceManager会为它分配一定的资源。这些资源包括计算资源(如内存、CPU)和存储资源(如磁盘空间)。同时,ResourceManager会启动一个ApplicationMaster。 3. **任务执行**:应用程序的各个任务会在不同的节点上运行,每个任务都会向附近的NodeManager发送请求,以获取所需的资源。NodeManager会监控资源的使用情况,并在必要时将资源分配给任务。 4. **资源释放**:当任务完成或不再需要时,会向NodeManager发送资源释放的请求。NodeManager会更新资源的使用情况,并通知ResourceManager。ResourceManager则会将这些资源回收,并重新分配给其他应用程序。 5. **应用程序退出**:当应用程序结束时,它会通知ResourceManager释放所有相关的资源。ResourceManager会停止ApplicationMaster,并回收为其分配的所有资源。 总之,YARN通过集中式的资源管理,为Hadoop提供了良好的可扩展性和资源利用率,使得大型数据集的处理变得更为高效。