一. Yarn 产生背景
1.YARN 是在 MRv1 基础上演化而来的,它克服了 MRv1 中的各种局限性。MRv1 主要有以下缺点:
- 扩展性差。在 MRv1 中,JobTracker同时兼备了资源管理和作业控制两个功能,这成为系统的一个最大瓶颈,严重制约了 Hadoop 集群扩展性。
- 可靠性差。MRv1 采用了 master/slave 结构,其中,master 存在单点故障问题,一旦它出现故障将导致整个集群不可用。
- 资源利用率低。MRv1 采用了基于槽位的资源分配模型。Hadoop 将槽位分为Map Slot 和 Reduce Slot 两种,且不允许它们之间共享,常常会导致一种槽位资源紧张而另外一种闲置(比如一个作业刚刚提交时,只会运行 Map Task,此时 Reduce Slot 闲置)。
- 无法支持多种计算框架。MapReduce 这种基于磁盘的离线计算框架已经不能满足应用要求,从而出现了一些新的计算框架,包括内存计算框架、流式计算框架和迭代式计算框架等,而 MRv1 不能支持多种计算框架并存。
2. YARN 实际上是一个弹性计算平台,可对多种框架进行统一管理。具有以下优势:
- 资源利用率高。共享集群模式则通过多种框架共享资源,使得集群中的资源得到更加充分的利用。
- 运维成本低。
- 数据共享。跨集群间的数据移动不仅需花费更长的时间,且硬件成本也会大大增加,而共享集群模式可让多种框架共享数据和硬件资源,将大大减小数据移动带来的成本。
二. Yarn设计思想
在 Hadoop 1.0 中,JobTracker 由资源管理(由 TaskScheduler 模块实现)和作业控制(由JobTracker 中多个模块共同实现)两部分组成