论文部分内容阅读
随着信息技术的发展以及数据分析在生产中作用的提升,业界对于大规模数据的高效分析工具提出了迫切需求。如今大规模数据计算框架发展迅速,其中有传统的基于网格和硬盘的计算方式,也有当下广受关注的基于分布式数据库(例如HDFS,HBASE)和内存的计算方式。由于传统的并行编程模型存在的诸多局限性,并且如今并行计算应用场景的不断丰富,对新兴的分布式计算框架的适用性以及处理效率都提出的了更高的要求。该项目的研究目的在于增强其通用性,并在此基础上提高对大规模浮点计算的处理效率以及系统稳定性。本文主要的研究工作有两点:其一,是使计算框架满足多类型类资源调度的需求,实现多类资源统一调度,均衡分配;其二,是Spark计算框架开放式代码结构的设计,使计算框架具有更强的兼容性。因此,本文提出的设计方案是在充分利用Spark计算框架优势的基础上,将GPU应用运行流程合理嵌入Spark框架中。同时强化原有平台资源管理模块以及调度模块的功能,使其能在多资源类型模式下进行资源的统一管理,合理配比、调度、回收及抢占,提高资源利用率。在设计的初始阶段,需要确定研究方案的可行性与价值性。因此,通过分析当前开源大规模数据计算框架设计文档中对资源调度模块的设计方案,结合对IBM早期企业级数据计算框架中资源管理器设计方案的研究,以及对近年来开源社区和其他科研机构对Spark计算框架所做的优化设计的学习研究,确定此科研方案的可行性。然后,通过功能模拟,设计功能组件模型,模拟运行,最终确定设计方案。通过对设计方案的研究分析,确定工程使用模块化开发方式。通过对资源调度模块的研究,运行环境设计以及功能逻辑结构的调整最终实现Spark计算框架功能的完善,以及系统稳定性的提升。本文对工程所采用的设计方案进行了详细描述。该工程采用Spark原生开发语言Scala进行开发[1],设计计算框架合理整合GPU资源调度以及程序运行。并提出两种类型的资源调度模块的实现方式。实现对大规模浮点数据并行计算效率的优化,提高了数据的吞吐量。根据系统功能的测试结果可以看出,Spark计算框架能够良好的支持GPU应用的运行,实现对于大规模浮点计算负载的高效处理。同时计算框架能够合理配置CPU与GPU资源,从一定程度上提高工作效率以及资源利用率。