YARN是Hadoop 2.0中引入的一个子项目,它对Hadoop集群管理系统进行了重大的架构改进,解决了Hadoop 1.0中的一些关键问题,尤其是在扩展性资源管理方面。YARN的主要功能是资源管理作业调度/监视,它允许不同的数据处理框架共享同一个Hadoop集群资源。

YARN的核心组件包括:

1. 资源管理器(ResourceManager,RM):负责整个集群的资源调度和任务分配,是YARN的主要协调者。

2. 节点管理器(NodeManager,NM):运行在集群中的每个节点上,负责监视和管理该节点上的资源(如内存、CPU、磁盘、网络),并处理来自资源管理器的命令。

3. 应用程序历史服务器(Application History Server,AHS):用于存储应用程序运行历史信息,以便事后分析和故障排查。

在应用程序的运行机制中,客户端首先提交应用程序给资源管理器,后者会启动一个应用主(ApplicationMaster)来负责该应用程序的生命周期管理。应用主与资源管理器通信,申请运行所需的资源容器。一旦获取资源,应用主会在容器上启动任务,并在任务执行完毕后清理资源。

YARN支持灵活的资源请求,客户端可以根据应用程序的需要指定内存和CPU资源,甚至指定容器的本地性要求,如优先在存储HDFS数据块副本的节点上运行,或者在特定机架上运行。这些功能大大提高了数据处理的效率。

YARN的另一个亮点是对应用程序生命周期的管理,从短暂的几秒钟到长时间运行的作业,如实时数据处理或长时间批处理作业,都能得到有效管理。应用主在运行过程中可以根据需要动态申请或释放资源,这为YARN带来了更高的灵活性和资源利用率。

与传统的MapReduce框架相比,YARN在资源管理方面做出了革命性改变。在MapReduce 1.0中,作业跟踪器(JobTracker)承担了资源调度和任务监控的双重角色,随着集群规模的扩大,JobTracker成为了瓶颈,限制了系统的可扩展性。而在YARN中,资源调度和任务监控的功能被分离,前者由资源管理器负责,后者由应用主负责,使得YARN可以支持更多种类的处理框架,如SparkTezHive等。