YARN架构设计

一.设计思想
1.hadoop1.0的旧架构及缺陷
YARN架构设计_第1张图片
最初的hadoop1模型中并没有yarn,一个 Hadoop 集群可分解为两个抽象实体:MapReduce 计算引擎和分布式文件系统。当一个客户端向一个 Hadoop 集群发出一个请求时,此请求由 JobTracker 管理。JobTracker 与 NameNode 联合将任务分发到离它所处理的数据尽可能近的位置。然后JobTracker 将 Map 和 Reduce 任务安排到一个或多个 TaskTracker 上的可用插槽中。TaskTracker 与 DataNode一起对来自 DataNode 的数据执行 Map 和 Reduce 任务。当 Map 和 Reduce 任务完成时,TaskTracker 会告知 JobTracker,后者确定所有任务何时完成并最终告知客户作业已完成。

缺陷:
1.增加了NameNode的工作压力,Namenode内存有限容易宕机。
2.在TasktRracker端,以MapReduce task的数目为资源的表示过于简单,没有考虑到cpu/内存的占用情况,如果两个大内存消耗的task被调度在一起,很容易发生内存溢出错误。

2.YARN的基本原理

为了解决旧框架问题,YARN设计思想还是主从架构,分为ResourceManager 和每个slave节点的NodeManager
其中ResourceManager包含两个关键组件:
ASM(applicationsmanager): 负责管理所有job及job的启动、监控、重启、失败
Scheduler:为该job进行资源计算,得出该运行job任务的子节点以及调度任务的顺序,仅负责调度。

YARN架构设计_第2张图片
过程
1)客户端向resourcemanager发送一个提交job的请求
任务先提交给管理器AMS
ASM 将任务转交给调度器Scheduler
hadoop jar … jar … … …
2)一旦有资源,调度器Scheduler开始提交job的运行
resourcemanager(AMS)到对应资源启动当前应用程序MRappmaster
3)MRappmaster向resourcemanager申请运行maptask和reducetask的资源
4)resourcemanager向MRappmaster返回资源节点
5)MRappmaster到对应的节点上启动Container,并在Container中启动maptask任务
6)maptask和reducetask运行过程中向MRappmaster汇报自己的运行状况和进度
7)maptask或reducetask运行完成向MRappmaster汇报,进行资源销毁,释放资源
8)当所有的maptask和reducetask都运行完成,MRappmaster向resourcemanager进行注销自己

job提交过程
YARN架构设计_第3张图片

你可能感兴趣的:(hadoop体系)