这是我参与「第四届青训营 」笔记创作活动的第4天
资源和调度主要解决大规模集群中资源管理和任务调度相关问题
本模块主要讲解两个典型系统:
主要针对离线业务场景:Hadoop YARN
主要针对在线服务场景:Kubernetes
- 课程思维导图
Yarn概述
场景设置: 学校为了改善学生的生活设置了美食餐厅,智能堂食,缴纳费用与学院的餐厅配额正相关,怎样在尽可能多的情况下尽可能多的座位被使用?
一种简易分配模型:有序排列放置,分配餐厅座位。 问题:这种分配方式是否高效且公平?是否还要考虑其它因素?即便是有空余的位置,但仍然无法最大化利用。
改进的分配模型 为不同学院按照人员比例进行配额分配,在内部进行先到先服务的准则。备用经理。
如何满足“尽可能多” ?
- 座位超售:分配座位大于总座位数
- 学院超用:学院可以超分配位置
- 座位超发:“一个座位坐两个人”
- 鼓励快餐:鼓励快速就餐离开
如何满足就餐学生个性化需求?
- 用餐小组必须坐一个桌子
- 用餐小组必须坐不同桌子
- 用餐小组必须靠窗位置坐
- 有重要活动同学需靠前就餐
调度系统演进-调度系统发展的背景
- IT到DT时代的变革,注重数据价值;
- 数据计算方式的变革,注重计算效率;
- 企业对外服务需要数以万计的硬件资源;
- 灵活调度,提高利用率是降本增效的关键问题;
用有限资源解决资源无法满足的需求时就需要调度; 调度系统主要解决资源请求和可用资源的映射(Mapping)的问题
调度系统演进-调度系统预达的目标
- 严格的多租户间公平、容量保障
- 调度过程中的高吞吐与低延迟
- 高可靠性与高可用性保障
- 高集群整体物理利用率
- 满足上层任务的个性化调度需求
- 任务持续高效稳定运行
Yarn的整体架构
需要注意的问题及个人思考:
-
Yarn并不清楚用户提交程序的运行机制,只提供运算资源的调度(用户程序向yarn申请资源,yarn负责分配资源)
-
Yarn中的主管角色是ResourceManager,具体提供运算资源的角色是NodeManager
-
Yarn与运行的用户程序完全解耦,意味着Yarn上可以运行各种类型的分布式运算程序,如Spark、MapReduce、Storm、Tez等,前提是这些技术框架中有符合Yarn规范的资源请求机制即可
-
因为Yarn不参与用户程序的执行等,使得Yarn成为一个通用的资源调度平台。企业中以前存在的各种计算引擎集群都可以整合在一个资源管理平台上,提高资源利用率
-
调度器不参与任何与具体应用程序相关的工作,如不负责监控或者跟踪应用的执行状态等,也不负责重新启动因应用执行失败或者硬件故障而产生的失败任务,这些均交由应用程序相关的Application Master完成。