一.Yarn介绍
-
Apache Hadoop YARN 一种新的Hadoop资源管理器,为上层提供统一的资源管理与任务调度及监控,提高集群管理效率、资源使用率、数据共享效率。MapReduce已经在hadoop-0.23上进行了全面检修,称之为MapReduce 2.0(MRv2)或YARN。
- MRv2的基本思想是将JobTracker的两个主要功能,资源管理和作业调度/监视分成单独的守护进程。
二.MRv1和Yarn对比
由上图可知,
MRv1主要由JobTracker和TaskTracker组成。
JobTracker主要功能:
- 资源管理,协调平衡集群中的计算节点,合理分配。
- 任务调度,一个作业对应多个任务,负责任务调度、状态监控、容错管理等。
TaskTracker主要功能:
- 执行任务,响应JobTracker命令,如启动、停止任务等。
- 汇报心跳:汇报节点健康状况、资源使用情况等。汇报任务执行进度、任务运行状态等。
MRv2主要由ResourceManager、NodeManager、ApplicationMaster和Container组成。
- ResourceManager, 简称RM。整个集群同一时间提供服务的RM只有一个,它负责集群资源的统一管理和调度。以及还需要处理客户端的请求,例如:提交作业或结束作业等。并且监控集群中的NM,一旦某个NM挂了,那么就需要将该NM上运行的任务告诉AM来如何进行处理。
- NodeManager, 简称NM。整个集群中会有多个NM,它主要负责自己本身节点的资源管理和使用,以及定时向RM汇报本节点的资源使用情况。接收并处理来自RM的各种命令,例如:启动Container。NM还需要处理来自AM的命令,例如:AM会告诉NM需要启动多少个Container来跑task。
- ApplicationMaster, 简称AM。每个应用程序都对应着一个AM。例如:MapReduce会对应一个、Spark会对应一个。它主要负责应用程序的管理,为应用程序向RM申请资源(Core、Memory),将资源分配给内部的task。AM需要与NM通信,以此来启动或停止task。task是运行在Container里面的,所以AM也是运行在Container里面。
- Container, 封装了CPU、Memory等资源的一个容器,相当于是一个任务运行环境的抽象。
三.总结对比
1.MRv1不足
- JobTracker单点故障,如果它挂掉,整个系统无法运转
- JobTracker负载过重,限制了集群扩展,随着节点规模的增大,称为集群的瓶颈
- 仅支持MR计算框架,适合批处理、基于磁盘的计算
2.Yarn改进
- 资源管理与计算框架解耦设计,一个集群资源共享给上层各个计算框架,按需分配,提高资源利用率
- 运维成本显著下降,只需运维一个集群,同时运行满足多种业务需求的计算框架
- 集群内数据共享一致,数据不再需要集群间拷贝转移,达到共享互用
- 避免单点故障、集群资源扩展得到合理解决