论文部分内容阅读
近年来,互联网上应用种类急剧增多,数据量急剧增大。在这种条件下,用于大规漠数据处理的分布式计算获得了飞速发展。MapReduce编程模型的提出推动了分布式编程模型的发展。很快Yahoo!根据Google的架构实现了支持MapReduce的开源框架Hadoop,Hadoop以良好的稳定性和扩展性在学术界和工业界得到广泛的应用和推崇。自此之后各种各样的面向海量数据处理的编程模型框架开始涌现。多种数据处理编程框架的出现对现有的集群资源管理系统提出了挑战,传统的集群资源管理系统与数据处理编程框架的模式不相匹配,二者的结合存在很多困难,另一方面编程框架的集群专用性使得编程框架之间的数据共享存在诸多困难。
本文通过对支持多编程模型框架的资源管理系统的相关研究的细致分析对比,总结出集群资源管理系统的关键技术,并在对各种编程框架的研究和分析基础上,针对现今的资源管理系统的缺陷设计并实现了一个面向数据处理编程框架的资源管理系统,支持多种编程框架共享集群资源,解决目前的资源管理系统普遍存在的缺陷。主要研究内容及贡献如下:
1)提出了一种面向编程框架的资源自动伸缩的机制,通过实时监控编程框架的资源使用情况为编程框架自动伸缩资源,使得编程框架不需要做任何修改就能接入,极大地减轻了编程框架开发人员的负担,具有良好的兼容性和灵活性,方便用户使用。
2)提出了一种面向编程框架的轻量级资源虚拟化方案,通过基于Linux Container的虚拟化方案管理编程框架的CPU和内存资源,使得多个编程框架之间的资源互相隔离、互不干扰,同时尽量降低虚拟化带来的开销,从而保证各个编程框架的性能。
3)提出了一种面向多种资源的关键资源匹配算法(DRBF算法),通过减少集群内的资源碎片,提升系统吞吐量,提升集群的资源使用率。
4)最后设计并实现了一种面向多种数据处理编程框架的集群资源管理系统Cello,实现了上述的机制,并进行了详细的测试。通过测试验证Cello系统的资源自动伸缩机制的可行性,同时验证了Cello在保证编程框架性能的同时能减少集群的资源碎片,提高系统吞吐量,提升资源利用率。