论文部分内容阅读
虽然HDFS的默认副本策略能为数据存储及MapReduce的计算功能提供支撑,并且具有安全性和节点选择简单等优点,但 Hadoop框架并没有重视现实集群中几个重要特征:集群节点的异构性、应用环境的多样化、数据文件访问规律等特征。因此,从分布式存储系统角度上看,HDFS采用默认副本策略不能为存储系统提供优化的I/O性能,从 HDFS所支持的计算应用 MapReduce所需数据的角度看,HDFS采用默认副本策略将引起数据的不合理分布情况,不能充分利用“数据本地性”(data locality),并最终导致集群计算性能的下降。因此,本文提出了一种优化的HDFS副本放置策略。该策略的不同之处在于以应用为导向将数据划分为计算型数据和存储型数据两类,并分别为不同数据类型提供不同的副本放置策略。针对计算型数据使用 MapReduce模块为主的特点,优化的数据副本放置策略在为数据副本选择存储节点时,以节点数据访问负载与节点性能相适应为原则,旨在增加数据计算的“本地化”,即计算节点从本地获得所需计算数据,减少网络传输,提高 MapReduce的计算效率。针对存储型数据使用HDFS模块为主的特点,响应用户读写访问是其主要存储目的,优化的数据副本放置策略以负载均衡为目标,选择综合负载较小的节点作为数据副本的存储节点,综合负载考虑节点的硬件资源(如 CPU、内存)占用率,以及工作连接数(如数据节点上写入、读取、复制副本等操作)。 由于 Hadoop中的数据副本是以数据管道的方式写入,为了避免第一个存储节点写入失败而导致数据副本在其余两个节点均存储失败的情况,优化的副本放置策略在为数据副本选择三个最优的存储节点之后,还进一步对存储节点的写入次序进行优化,提出基于数据节点可靠性的写入次序优化方案,以提高第一个数据副本写入成功的概率,进而最大化三副本写入的成功率。 搭建基于 Hadoop的真实集群环境对本文提出的优化副本放置策略进行四组验证实验,结果表明与 HDFS默认副本策略相比,优化的计算型数据副本放置策略能够有效地提高 MapReduce工作时的Map任务本地化比例,进而缩短 MapReduce程序的完成时间,并在集群节点出现变动时具有更好的稳定性和恢复能力。优化的存储型数据副本放置策略能在一定程度上避开繁忙节点,并能有目的性的引导副本向性能较优节点进行存储,使集群负载更加均衡,最终缩短存储型数据的写入时间,提高存储效率。