论文部分内容阅读
随着移动互联网的发展,网络中的数据量急剧增加,这些数据经过分析和挖掘后可以得到非常有价值的信息,这些信息可用于商业、科研、生产等各方面研究。急剧增长的海量数据如果使用传统的超级计算机来处理会带来高昂的花费、巨大的能源消耗,而云计算作为一种廉价、高效、可靠的解决方案得到了人们的关注。Hadoop是一个开源的云数据处理平台,可以广泛的应用于海量数据的处理和分析。云平台采用了分布式文件系统,著名的分布式文件系统有Lustre、GPFS(General Parallel File System)等,这些系统的设计都是基于大型机,不适合目前以微机为主的云计算环境。本文采用GlusterFS作为云平台的分布式文件系统,GlusterFS是一个适用于微机的分布式文件系统。本文首先要实现GlusterFS与Hadoop的核心模块Common的连接,这点的实现本文利用了GlusterFS自身的Translator机制,该机制能够实现所有GlusterFS的扩展功能。利用Translator中的库函数连接Hadoop的Common核心,获取相应存储权限并定义了org.apache.hadoop.fs.glusterfs类,然后创建符合GlusterFS数据格式的数据流并采用FUSE(Filesystem in Userspace)方式将GlusterFS挂载到了Hadoop中,从而替代了Hadop中自身的分布式文件系统HDFS(Hadoop Distributed File System)。这样就能避开HDFS的缺陷,利用GlusterFS的优点提升Hadoop整体的云计算性能。该方案实现的优化平台采用了Infiniband与RDMA(Remote Direct Memory Access)协议结合的传输网络,该网络能保证Hadoop不会受到网络带宽和速率的限制,进一步提高了Hadoop的性能;根据系统中网络拥塞情况,采用了一个判断函数来决定是否在当前网络中采用数据压缩以节省网络的带宽,进一步提升了Hadoop的数据传输速率;针对当前GlusterFS的数据缓存算法考虑的不是很全面,采用了GAC(GlusterFS AutomaticCache Algorithm)数据缓存算法,该算法先对当前数据的顺序性进行有无判断,再对有顺序性的数据进行强弱判断,针对强顺序性的数据采用预读粒度计算公式计算当前预读粒度的大小,这样可以通过合理的预读来提升Hadoop的文件系统性能。这一系列的优化措施较大的提升了Hadoop平台中分布式文件系统的性能。本文通过在Hadoop平台上的测试,证明了本文的优化Hadoop系统在分布式文件系统方面性能提高了10倍左右,网络性能提高了3倍以上,Hadoop平台云计算性能提高了2倍以上。