分布式并行数据处理程序开发好后,需要运行在一个大规模的集群当中,而通常,一个大规模集群在同一时间可能需要为很多个数据处理任务所共享,此时,就会面临如何分配运算资源给每一个数据处理任务的问题。
Yarn就是一个为分布式运算程序提供统一调度和运算资源分配的资源调度平台,它能将集群的资源统一管理起来,根据集群的资源状态,分配用来计算的机器,或者等待其他计算任务计算完毕再分配任务。
简单来说,利用Map Reduce开发的分布式数据处理程序,需要运行在Yarn平台之上。
Yarn中包含Resource Manager和Node Manager两类角色,Resource Manager负责统筹规划,而Node Manager则负责提供运算资源。
MapReduce程序则包含MRAppMaster和众多的Map task及Reduce Task。它们都运行在Node Manager所提供的运算资源容器Container中。只是,MapReduce程序一旦运行起来之后,Yarn中的各类软件成员是不会干预MapReduce程序的运行逻辑的。