0. 前言
本文总结学习自《大数据日知录-架构与算法》
对于大型互联网公司来说,如何充分挖掘硬件资源潜力以及增加其利用率是至关重要的问题。对于互联网公司来说,无论是内部系统还是对外提供服务的系统,都运行着海量各种类型的任务,通常的做法是采用静态划分的方式进行,即不同类型的计算任务使用固定的硬件资源,各个计算框架之间相互独立,互不干扰。这种方式虽然简单,但是资源的整理利用率不高,存在某些计算系统缺少资源,而某些计算系统有大量计算资源闲置。
因此集群资源管理与调度系统的核心目标就是:在保证甚至加快计算任务的整理完成速度的前提下提高系统的资源利用率。
采用独立的资源管理与调度系统的优点有:
- 集群整体资源利用率高。所有的资源由调度层进行统一的分配,不会出现在资源闲置情况下不同任务资源分配不均匀的情况;
- 可增加数据共享能力。所有的计算框架共享同一个集群中的数据,避免了数据的重复存储和传输;
- 支持多种类型的计算框架和多个版本的计算框架。计算框架在不断出现,不可能为每一个计算框架都构建一个计算集群,采用统一的调度系统就可以解决这个问题;
1. 资源管理抽象模型
1.1 概念模型
从概念上来说,集群管理与调度系统主要负责将集群中的硬件资源以一定的策略分配给不同的计算任务。其中涉及到三个主要模块:
- 资源组织模型:主要就是将集群中的资源以一定的方式组织起来,以方便后续的分配和使用。例如Facebook的corona将资源组织为resource-group-pool三级队列结构,YARN中是以container为单位进行资源分配;
- 调度策略:主要负责以一定的策略将资源分配给任务,例如FIFO方式,DRF方式等;
- 任务组织模型:主要将用户提交的任务以一定的方式组织起来,方便后续的资源分配。例如各种任务队列;