YARN的产生背景和架构剖析

hadoop1存在的问题
1、单点故障,可靠性低: JobTracker采用了master/slave结构,是集群事务的集中处理点,存在单点故障
2、单点瓶颈,扩展性差: 需要完成的任务太多,JobTracker兼顾资源管理和作业控制跟踪功能跟踪任务,启动失败或者迟缓的任务,记录任务的执行状态,维护计数器,压力大,成为系统瓶颈
3、资源管理和任务执行强耦合: 在JobTracker端,用Map/Reduce Task作为资源的表示过于简单,没有考虑到CPU、内存等资源情况,当把两个需要消耗大内的Task调度到一起,很容易出现OOM。
4、资源利用率低: 基于槽位的资源分配模型,槽位是一种粗粒度的资源划分单位,通常一个任务不会用完一个槽位的资源,hadoop1把资源强制划分为Map/Reduce两种Slot,当只有maptask时,Reduce slot不能用,当只有Reduce Task时,Map Slot不能用,容易造成资源利用 不足
5、不支持多种分布式计算框架

Hadoop YARN架构演进

从Hadoop-2.x开始,Hadoop的架构发生了变化:将hadoop1的MapReduce集群一分为二 MapReduce和YARN

  • MapReduce: 仅仅只是一套用来编写分布式计算应用程序的API
  • YARN: 是一个master/slave架构的分布式集群,用来进行集群的资源管理和调度工作,提供了job调度规范,出了能运行MapReduce应用程序之外,还可以支持Spark、Flink等分布式计算应用程序。

这样拆分的目的,大大的提高了Hadoop平台通用性,逐渐演变成一个大数据基础平台,甚至可以理解成用来解决大数据问题的分布式操作系统。

Hadoop YARN的概述
YARN的核心特性:
– YARN并不清楚用户提交的程序上运行机制,只提供了一套资源管理和调度的规范
– YARN只提供运算资源的调度
– YARN是一个master/slave的主从架构,依靠zookeeper实现HA,主节点叫做ResourceManager,从节点叫做NodeManager
– YARN被设计成一个通用的资源管理和作业调度平台,Spark、Flink等运算框架都可以整合到YARN上运行,只要满足YARN的规范的资源请求机制即可。

优点:
– 极大减少了JobTracker的资源消耗,每个应用程序的ApplicationMaster都分布在分布式的整个集群的所有NodeManager中。
– YARN中的ApplicationMaster只有一个规范,用户可以把自己的分布式计算应用程序部署到YARN上运行,只要满足ApplicationMaster的规范
– YARN中的container的资源抽象比slot更合理,老版本Slot分为Mapslot和Reduceslot,不能混合使用,资源利用率低
– 借用Zookeeper解决RM的SPOF问题,老版本JobTracker上存在SPOF的问题的