论文部分内容阅读
大数据时代不但带来了数据量的迅猛增长、数据访问的并发压力,也对数据计算提出了更高的性能要求。云计算作为一种解决方案,被提出之后就得到了迅速发展。它近乎无限的存储能力和计算能力为互联网的发展指明了一个新的方向。Hadoop作为目前主流的云计算平台,也得到了广泛的认可和应用。Hadoop是一种高可用性、高伸缩性、高扩展性的高性能大数据处理平台。同时它又兼具低成本和开源优势。它的实现有两个核心:HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一个支持超大文件、流式访问,并具有高吞吐量的分布式文件系统。MapReduce是一个将所有并行实现透明化,只为用户提供简单接口,并具有快速并行计算能力的并行编程模型。本文首先介绍了Hadoop平台的背景,包括它在技术背景上的产生与发展,在应用背景上的应用与前景。之后对Hadoop的关键技术HDFS、MapReduce和Scheduler进行研究分析。在此研究基础之上,本文指出MapReduce应用可在程序、参数和系统三个层面进行优化。程序和参数两个层面实现优化的可选项很多,本文在第三章对此作了详细阐述。Hadoop在管理资源中将内存和CPU两种计算资源捆绑在一起,然后再根据任务类型分为Map Slot和Reduce Slot两种资源模型。这种管理机制实现简单,但是存在资源囤积现象,降低了资源利用率。本文在第四章对这两种计算资源进行松绑,并定义了memSlot和cpuSlot两种资源模型。在资源分配时,根据Map/Reduce的实际需求来派发两种资源。在7节点的PC集群上对21GB的日志数据进行处理,改进方案实现了内存利用率提升3.5%,CPU利用率提升4.3%,有效解决了资源囤积现象。MapReduce应用在运行中会有大量的排序操作。这些排序大多又是迭代执行,性能消耗较大。本文第五章以此为切入,重新梳理了Shuffle阶段的执行流程。研究了以更加高效的计数排序代替快速排序。同时根据Combiner的定义对Shuffle执行进行分支。一个分支删去了spill阶段的分区内快速排序和combine阶段的归并排序,减少性能消耗。另一分支提前执行Combiner,提升数据处理效率。两个分支在7节点的PC集群上对21GB的日志数据进行处理,都实现了约半小时的效率提升。