Yarn

当Hadoop集群的节点数很多时(一般1000个以上),前一讲描述的MRv1机制就面临着性能瓶颈,因为jobtracker的负担过重,且是系统的一个单点。于是在Hadoop2.x中引入了YARN(Yet Another Resource Negotiator)。

YARN将jobtracker的职能划分为多个独立的实体,从而改善了经典的MapReduce机制面临的扩展性瓶颈问题。

jobtracker同时负责作业调度和任务进度监视。YARN将这两种角色划分为两个独立的守护进程:管理集群上资源使用的资源管理器(resource manager,RM)和管理集群上运行任务生命周期的应用管理器(application master,AM)。基本思路是:application master与resource manager协商集群的资源;每个容器(container)有特定的内存和核数上限,在这些容器上运行特定应用程序的进程。容器由集群节点上运行的节点管理器(node manager,NM)监视,以确保应用程序使用的资源不会超过分配给它的资源。

与jobtracker不同,每个MapReduce作业有一个专用的application master,它在作业的运行期间一直运行着。

YARN比经典MapReduce机制更具一般性,实际上MapReduce只是YARN应用的一种形式。有很多其他的应用可以运行于YARN之上(例如Spark)。YARN设计的精妙之处在于不同的YARN应用可以在同一个集群上工作,这大大提高了集群的利用率,也可以方便地共享数据。


YARN上的MapReduce比经典的MapReduce包括更多实体:
➢ 提交MapReduce作业的客户端
➢ YARN resource manager,负责协调集群上计算资源的分配
➢ YARN node manager,负责启动和监视集群中机器上的计算容器
➢ MapReduce application master,负责协调运行MapReduce作业的任务。它和MapReduce task在容器中运行,这些容器由resource manager分配并由node manager进行管理
➢ 分布式文件系统,一般为HDFS,用于在其他实体间共享作业的资源


YARN资源隔离:
资源隔离是指为不同任务提供可独立使用的计算资源以避免它们相互干扰。当前存在很多资源隔离技术,比如硬件虚拟化、虚拟机、Cgroups、Linux Container等。

YARN对内存资源和CPU资源采用了不同的资源隔离方案。对内存资源,YARN采用了进程监控的方案控制内存使用,即每个NM启动一个额外监控线程监控每个Container内存资源使用量,一旦发现它超过配置的资源量,则将其杀死。对于CPU资源,则使用Cgroups方案进行隔离。

另外,YARN使用队列来对不同用户提交的作业进行资源控制。

 

posted @ 2025-07-31 21:09  屠魔的少年  阅读(7)  评论(0)    收藏  举报