资源管理框架YARN
一、 YARN 产生背景
MapReduce 1.0的缺陷
- JobTracker存在单点故障风险(ZooKeeper多设节点)
- 资源分配只考虑MapReduce任务数量,不考虑任务需要的CPU、内存,TaskTracker所在节点容易内存溢出
- 资源划分不灵活(强制等量划分为slot,包括Map slot和Reduce slot)
Hadoop 2.0
- HADOOP 2.0 在HDFS2上加个资源管理,所有平台都向YARN索要资源,可以统一分配资源
- YARN 设计思路:资源管理与计算相分离
- YARN 是独立出来的资源管理框架
二、 YARN 体系结构
- 计算都交给ApplicationMaster / Container
NodeManager(只是监控)
- 监控所在节点每个Container的资源使用情况,健康状况
- 主要负责管理抽象的容器,只处理与容器相关的事情,而不具体负责每个任务(Map任务或Reduce任务)容器本身的任务
ApplicationMaster
Container
- 作为动态资源分配单位
三、 YARN 工作流程
- 用户编写客户端应用程序,向YARN提交应用程序
YARN 集群部署
-
多租户:一个YARN 框架下部署多个计算系统
- 可以左边运行MapReduce,右边运行Spark
-
之前一个系统一个集群:为了避免干扰,把内部的服务器拆分,分别部署不同的系统
- 集群资源利用率低
- 维护代价高
-
多个系统一个集群:YARN
YARN 发展目标
- 一个框架多个系统:在一个集群上部署一个统一的资源调度管理框架YARN,在YARN之上可以部署其他各种计算系统