为提高小文件的操作效率,系统为每个用户建立了SFQ和SFOQ。在这一节中,将通过实验研究SFQ长度对云存储系统的影响,选取读取文件时间、合并文件时间和节省的内存空间作为参考指标,以得到小文件合并的最优方式。
在基于HDFS的云存储系统中,对文件的操作主要有上传、下载、读取等。合并操作对上传没有影响,下载的核心操作也是读取,因此选取读取文件时间作为参考指标。提高名称节点内存利用率是本文的主要工作,因此将通过合并文件节省的内存空间作为参考指标之一。合并文件的效率是影响存储系统性能的一个重要因素,故也将合并文件时间作为参考指标。
3.1实验方案与实验结果
我们将通过3个实验分别获取在SequenceFile中读取小文件的平均时间、合并文件的平均时间以及合并所能节省的内存空间等指标值,并通过AHP分析数据,得出SFQ长度与系统性能的关系。6台Dell服务器构成云存储环境,服务器的配置均为CPU 8 Intel Xeon 2。13 GHz,内存8 GB,硬盘500 GB,操作系统均为Ubuntu Server 9。04,Hadoop版本为0.20.0.
实验1统计合并文件的平均时间(t1)。按照SFQ长度分别为100、200、300、400、500、600、700、800、900、1 000合并小文件50次,并且在不同的时段重复这样的实验10次。统计这10种情况下合并文件所需时间的平均值,最终得到合并文件的时间,结果如图3所示。
图3 合并文件的平均时间
实验2统计读取小文件的平均时间(t2)。小文件合并为SequenceFile之后,读取小文件的时间主要分为在SequenceFile中查找小文件的时间和获取小文件内容的时间2部分,因此,小文件合并之后读取文件的时间与该文件在SequenceFile中所处的位置有关。HDFS提供的API中采用顺序查找算法进行文件查找,因此读取的文件在SequenceFile中位置越靠后所需的时间越长。在实验l中得到的10个大文件中以10为步长读取小文件,获取其平均时间作为读取该大文件中小文件的平均时间,实验结果如图4所示。
实验3统计合并10 000个小文件节省的内存空间。将10 000个小文件上传到云存储系统,统计其占用名称节点的内存空间,然后分别按照SFQ长度为100、200、300、400、500、600、700、800、900、1 000进行合并,获取合并后占用名称节点的内存空间,两者之差即为合并操作所节省的内存空间,实验结果如图5所示。
图4 读取小文件的平均时间
图5 节省的内存空间
3.2实验结果分析
3.2.1数据标准化将实验指标转化为逆指标(越小越好的指标),分别利用Min-Max方法和Z-Score方法对转化为逆指标的实验数据进行标准化睁9I,结果如图6、图7所示。
图6 Min-Max法的标准化数据
图7 Z-Score法的标准化数据