Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,前不久被提升为高层次的Hadoop子项目。
YARN最初是为了修复MapReduce实现里的明显不足,并对可伸缩性(支持一万个节点和二十万个内核的集群)、可靠性和集群利用率进行了提升。
YARN实现这些需求的方式是,把Job Tracker的两个主要功能(资源管理和作业调度/监控)分成了两个独立的服务程序——全局的资源管理(RM)和针对每个应用的应用 Master(AM),这样,一个应用要么是传统意义上的MapReduce任务,要么是任务的有向无环图(DAG)。
和Hadoop里的其他内容一样,YARN的资源管理和执行框架都是按主/从范例实现的——节点管理器(NM)运行、监控每个节点,并向资源管理器报告资源的可用性状态,和HDFS的架构相比,最终为系统里所有应用分配资源的是资源管理器。
特定应用的执行由应用Master控制,AM负责将一个应用分割成多个任务,并和资源管理器协调执行所需的资源。资源一旦分配好,应用Master就和节点管理器一起安排、执行、监控独立的应用任务。
YARN驱动使用“应用提交客户端(Application Submission Clien)”将一个“应用”提交给YARN资源管理器。借助“ClientRMProtocol”,客户端先获取一个新的“应用ID”,然后提交运行 “应用”。应用提交的信息里,包含应用Master要启动的Unix进程信息。提交信息还描述了应用运行要使用的本地文件/jar,执行需要的实际命令, 以及各种Unix环境设置等。可以在这里查看编写YARN驱动的详情。
需要注意的是,YARN并不会改变MapReduce编程模型,它只是应用开发人员使用的API。YARN提供了一种新的资源管理模型和实现,用来 执行MapReduce任务。因此,在最简单的情况下,现有的MapReduce应用仍然能照原样运行(需要重新编译),YARN只不过能让开发人员更精 确地指定执行参数。
另外,YARN可用来创建新的框架和除MapReduce之外的执行模型,可以同时利用Hadoop集群的计算能力和丰富的数据存储模型,来解决具 体的新问题。这些新的框架还可以利用YARN的资源管理,提供新的应用管理器实现。此外,这种架构还允许多个应用管理器同时存在,共享同一个Hadoop 集群和驻留在集群上的数据。
via InfoQ