Hadoop原理之Yarn资源管理
Yarn设计思路、体系结构、工作流程
对比分析MapReduce1.0
MapReduce1.0的缺陷
1、单点故障:只有一个JobTracker负责整个作业的管理调度
2、JobTracter包揽一切,很容易导致出现故障,对MapReduce1.0做集群时只能有4000个节点。
3、容易出现内存溢出:只看任务数,不看每个任务消耗多少资源
4、资源划分不合理:打包后分成很多slot,其中有map的slot和reducer的slot,即时一方空闲,另一方也不能用,因此会导致资源浪费。
一、yarn的设计思路:
将原JobTracker三大功能拆分
yarn是从MapReduce中剥离出来的单独的框架,它是一个纯粹的资源管理框架,而不是计算框架。
二、yarn体系结构
三大核心:ResourceManager、ApplicationMaster、NodeManager
ResourceManager:两大核心调度器、应用程序管理器;接收来自ApplicationMaster提出的申请,通过查看资源的使用情况,以容器作为动态资源分配单位,每个容器中都分配了一定数量的CPU、内存、磁盘等资源,有效实现容器的隔离
1)调度器:被设计成可插拔的组件,由yarn提供,也可由用户编写
2)应用程序管理器:管理系统中所有应用程序,监控应用程序运行状态及失败重启等。
ApplicationMaster:用户提交作业时,resourcemanager接收到作业,会先给用户作业启动一个ApplicationMaster
(1)为应用程序申请资源,并分配给内部任务
(2)任务调度、监控与容错
NodeManager:单个节点上的资源管理,处理来自ResourceManager的命令,处理来自ApplicationMaster的命令
剖析yan的应用运行机制
资源请求模型:灵活的资源请求模型。请求多个容器时可以指定每个容器需要的计算机资源数(内存和cpu),还可以指定对容器的本地限制要求。
应用生命期:
模型1:一个用户作业对应一个应用,MapReduce采用的模型 ;
模型2:作业的每个工作流或每个用户对话对应一个应用。spark是采用这种模型。
模型3:多个用户长期共享一个长期的应用。
Yarn中的调度
YARN调度器的工作就是根据既定策略为应用分配资源。
三种调度器:FIFO、容量调度器和公平调度器