关于资源管理业界主要框架,大家可以看我前面的文章。资源管理框架(mesos/YARN/coraca/Torca/Omega)选型分析。业界当前最典型的就是YARN和MESOS,各自有支持者。
YARN和MESOS基本原理和框架类似,都是二层调度的思路,将集群的资源统一拿出来单独管理,在框架的本身上在构建应用,应用负责任务的创建,调度,框架本身负责资源的分配。可以说当前资源管理框架主要做到了两个基本点:
1、分:集群资源统一管理,根据应用进行分配。YARN上有从hadoop 1.0继承过来的Fair Scheduler和Capacity Scheduler,Mesos采用DRF算法。
2、管:不管是YARN还是MESOS都是采用LXC的container技术,隔离技术上并不成熟,工业应用上存在很多问题,尤其是内存,应用请求内存存在peak,很难从头到尾分配一个固定的内存给应用。
在资源隔离技术上,开源上在持续完善和发力,如YARN在不断完善内存/CPU的隔离技术,并公布了IO隔离方面的下一步涉及。IO资源分为磁盘IO和网络IO两种。目前YARN已经在这两方面展开工作,初步的设计文档已经发布,具体可参考:https://issues.apache.org/jira/browse/YARN-2139 和https://issues.apache.org/jira/browse/YARN-2140。
但是资源管理框架的假设前提是,各个应用是清楚自己应该占用多少资源,并且资源占用之后在整个生命周期内都最好不变,在工业应用中,这个是非常不现实的。
所以未来资源管理除了在隔离技术上突破之外,应该还要关注:
1、完善资源使用收集反馈机制,资源分配出去之后,使用率怎么样?效果怎么样?应该有一个收集反馈机制。
2、资源分配策略智能学习能力,结合收集反馈的信息,可以动态调整资源分配调度策略,具有自主学习决策的能力。
3、异构集群的管理能力,当前资源管理平台,主要聚焦在同构平台,异构平台在工业界是一个非常现实的问题,老机器还要发挥余热,新机器要充分挖掘性能潜力,就同时存在新老并存的场面。资源管理框架应该要能抽象异构平台,进行统一管理和分配,合理调度任务的运行。
只有完善了上面的能力,资源管理框架未来大有可为。