在一些公司中,所有服务器按照业务逻辑被拆分成若干个集群,这些集群各自运行着相对独立的业务,并由专门的运维人员管理。
然而,由于集群中应用特点不同,它们的利用率可能不一致,同一时间段,有的集群业务繁忙,资源利用率高,甚至可能出现排队等待资源的情况,而另外一些集群则业务空闲,资源利用率很低。此外,多个集群也可能导致数据冗余度增加,比如一个集群中的业务需要另外一个集群中的数据,可能需要跨集群拷贝数据,进而占用更多的磁盘空间。
1. 集群共享带来的好处
为了解决多集群带来的问题,可将多个集群统一为一个集群,这将带来以下几个好处:
(1)提高集群整体利用率。所有业务运行在一个大的集群中,并按需分配给各个应用程序,可达到资源错峰交谷的目的,提高系统整体利用率和均衡率。
(2)减少管理成本。多个集群合并成一个大集群后,便于统一管理和统一运维,可减少管理成本。
2. 多集群共享方案
有些公司中,同时存在多个hadoop集群,这些集群运行着不同的业务线,并对实时性、资源需求、优先级等有不同要求。为了实现集群资源共享,可将多个Hadoop集群合并成一个,并由Hadoop作业调度器统负责资源管理和任务分配。为了对应原先的业务逻辑,作业调度器通常将用户分成若干个队列(每个业务线一个队列),并给每个队列分配一定比例的资源,作业调度器中包含资源分配逻辑,能够按照一定的策略将资源分配各这些队列,并灵活实现资源按需分配,以达到资源最高利用。
3. 多服务共享方案
Hadoop只是当前比较流行的开源软件之一,除了Hadoop,很多公司还有其他一些服务,比如Web Server,Thrift Server、DataBase Service等,同样,通常考虑到服务的重要性和将来的发展,会将这些服务单独部署到独立的几台机器上,在大部分情况下,很多机器的资源利用率很低,为了提高机器整体利用率和支持服务自动化部署,可将这些服务混搭地部署到各个服务器上,于是资源统一管理系统诞生了,业界典型代表是Google的Borg和腾讯的Torca,开源界代表是Mesos和YARN。
资源统一管理系统的另外一个值得一提的动机是数据中心编程,也就是说,可以把数据中心看成一台超大的服务器,由一个资源管理系统对所有的计算资源,包括CPU、内存、硬盘、端口号等,进行统一管理和调度,涉及到的关键技术包括资源分配、资源隔离、资源划分等,具体可参考腾讯Torca的设计文档。