论文部分内容阅读
Hadoop以其高可用性成为当前大数据处理使用最广泛的工具,它是Google MapReduce和GFS的开源实现。相对于可用性,Hadoop的运行效率容易受到软硬件环境的影响。大型IT公司往往部署专门的Hadoop集群,对软硬件都进行有针对性的配置,其性能表现较好。然而通过调研发现,很多中小公司、高校的软硬件配置并不理想;另外,HPC系统的计算能力很强,但其他资源的配置相对有限,比如,天河2号平均单核内存不足0.33GB。在这些情况下,Hadoop的性能将大幅降低。 适用于HPC集群环境的分布式数据处理系统Mammoth,对MapReduce的执行机制进行了一系列优化。首先,Mammoth设计并实现了多线程的Map/Reduce任务执行引擎,在每个TaskTracker节点上设置一个单独的任务执行进程,所有的任务都被调度到该进程中以线程方式执行;其次,提取Map任务和Reduce任务对内存使用的细节特征,根据这些特征将Map/Reduce任务更细粒度地划分为多个子阶段;再次,实现全局的内存管理,统一管理各个任务线程对内存的使用,设计自适应的内存调度算法,动态分配和回收各个任务使用到的内存;最后,实现全局的I/O管理,统一管理各个任务线程对本地磁盘的读/写请求,为不同的I/O请求设置不同的优先级,动态地进行I/O调度。此外,Mammoth通过在应用层管理内存块的分配回收避免了Full GC的开销,还通过串行I/O和交错I/O相结合的方式提高了磁盘速度。 Mammoth保持原有Hadoop高可用的上层任务调度和集群管理机制,可以完全兼容已有的MapReduce程序。实验表明,在面对不同的中间数据类型和不同的集群配置时,Mammoth在总的执行时间上均能保持较好的性能提升。当系统内存不足、应用本身属于I/O密集型时,Mammoth的在总执行时间上的加速比达到最优。