一种小文件存储效率的优化方法

文档序号:6523259阅读:184来源:国知局
一种小文件存储效率的优化方法
【专利摘要】本发明提供一种小文件存储效率的优化方法,采用序列文件技术将小文件合并为大文件,结合多属性决策理论和实验得出合并文件的最优方式,通过基于层次分析法的系统负载预测算法实现系统的负载均衡。该一种小文件存储效率的优化方法和现有技术相比,实现了节省名称节点所占内存空间的目的,同时也实现了对合并之后的小文件的透明操作;实用性强,适用范围广泛,易于推广。
【专利说明】一种小文件存储效率的优化方法
【技术领域】
[0001]本发明涉及计算机应用【技术领域】,具体的说是一种小文件存储效率的优化方法。【背景技术】
[0002]HDFS采用主从式架构设计模式(master / slavearchitec时间到re),—个名称节点(NameNode)和若干数据节点(DataNode)构成HDFS集群。HDFS的这种单名称节点的设计极大地简化了文件系统的结构,然而也因此引发了 HDFS的小文件存储效率低的问题。因为HDFS中的每个目录和文件的元数据信息都存放在名称节点的内存中,如果系统中存在大量的小文件(指那些比HDFS数据块(默认为64MB)小得多的文件),则无疑会降低整个存储系统的存储效率和存储能力。
[0003]在各种存储系统中,存在大量这样的小文件。美国西北太平洋国家实验室2007年的一份研究报告表明,他们系统中有I 200万个文件,其中94%的文件小于64 MB,58%的小于64 kB。在一些具体的科研计算环境中,也存在大量的小文件,例如,在某些生物学计算中可能会产生3 000万个文件,而其平均大小只有190 kB。
[0004]解决基于HDFS的存储系统中小文件存储效率问题的主流思想是将小文件合并或组合为大文件,目前主要的方法分为2种,一种是利用Hadoop归档(Hadoop archive, HAR)等技术实现小文件合并的方法,另一种则是针对具体的应用而提出的文件组合方法。
[0005]利用HAR技术实现小文件的合并,从而提高了 HDFS中元数据的存储效率。结合WebGIS应用,以Hadoop为存储平台开发了 HDWebGIS原型系统;结合WebGIS访问模式的特点,将小文件组合为大文件并为其建立全局索引,从而提高了小文件存储效率。将小文件合并到大文件中并结合预取机制来提高系统存储和访问小文件的效率的方法。对分布式存储系统中小文件的并发访问进行了优化。
[0006]以上的研究工作都是基于文件的合并或组合来解决小文件存储效率不高的问题,然而还存在以下2个问题:第一,作为一个完整的系统,在提高小文件存储效率的同时,也应该考虑到系统的负载状况,因为不管是文件合并还是文件组合,对HDFS而言都是一个额外的操作;第二,未对小文件合并规模进行研究,即尚未确定多少个小文件合并为一个大文件可以使系统性能达到最优。

【发明内容】

[0007]本发明的技术任务是解决现有技术的不足,提供一种小文件存储效率的优化方法。
[0008]本发明的技术方案是按以下方式实现的,该一种小文件存储效率的优化方法,其具体优化步骤为:
一、序列文件合并:所述序列文件是HDFS提供的一种二进制文件,在存储系统中,对二进制文件由小文件合并为大文件,以小文件的索引号为key、内容为value的形式进行合并,合并的同时实现基于数据块的压缩; 二、对小文件存储效率优化:
O由存储系统为每个用户建立三种队列:第一种为序列文件队列SFQ,用于小文件的合并;第二种为序列文件操作队列SFOQ,用于对合并后小文件的操作;第三种为备用队列BQ,用于操作的小文件数超过第一种或第二种长度的情况;
2)用户将本地的文件上传至云存储服务器;
3)服务器开始对该文件的类型进行判断;
4)如果是小文件,将该文件的索引号放入SFQ中;
5)当SFQ满时,将发送“队列满”信号给控制器,而当定时器到定时点时,将发送“时间至IJ”信号给控制器;
6)接收到“队列满”或者“时间到”信号后,控制器开始读取SFQ的相关信息;
7)对系统负载进行计算,并据此决定是否进行小文件的合并;
8)文件合并后完成小文件与大文件之间的映射。
[0009]所述存储系统中采用多叉树的结构来构建文件索引,当用户将文件上传到存储系统后,系统会自动根据用户文件的组织形式建立对应的多叉树索引。
[0010]所述步骤5)?步骤8)中的控制器的具体处理逻辑为:
当控制器接收到信号时,首先判断信号类型,如果是“队列满”信号,则调用系统负载预测算法计算系统负载:
如果得到的系统负载低于系统设定的阈值,则开始合并文件,并取消系统中的“时间至IJ”信号;如果系统负载大于系统设定的阈值,则进一步判断BQ的数量:若BQ数量小于某个值,则新建BQ,将SFQ转移到BQ中并推迟合并操作,设定“时间到”信号,若BQ数量大于该某个值,则将BQ中的小文件进行合并,取消系统中的“时间到”信号;
如果接收到的是“时间到”信号,计算系统负载并判断是否大于系统设定的阈值:
若负载大于阈值,则推迟合并操作并设定“时间到”信号;若负载小于阈值,则合并BQ中的小文件,取消系统中的其他“时间到”信号。
[0011]所述系统负载预测算法是指基于层次分析法的算法:通过获取系统属性的历史信息,经过2次层次分析法分析,最终得到系统负载的预测值。
[0012]所述系统负载预测算法的详细过程为:算法依据系统属性的重要性,将每个时刻的系统负载属性值经过层次分析法分析融合为单一的决策属性值,然后依据决策属性值的时间重要性,经过第二次层次分析法分析最终得到下一时刻的系统负载值。
[0013]本发明与现有技术相比所产生的有益效果是:
本发明的一种小文件存储效率的优化方法采用SequenceFile技术将小文件以队列的形式合并为大文件,从而实现了节省名称节点所占内存空间的目的,同时也实现了对合并之后的小文件的透明操作;在确定影响队列长度的指标之后,通过实验获取指标值,采用数据标准化方法和三标度层次分析法确定队列长度的最优值,使得小文件的合并能在合并时间、文件操作时间和节省内存空间之间达到一种平衡;实用性强,适用范围广泛,易于推广。
【专利附图】

【附图说明】
[0014]附图1是本发明的小文件存储效率优化框图。
[0015]附图2是本发明的控制器控制逻辑流程图。[0016]附图3是本发明实施例合并文件的平均时间示意图。
[0017]附图4是本发明实施例读取小文件的平均时间示意图。
[0018]附图5是本发明实施例节省的内存空间示意图。
[0019]附图6是本发明实施例Min-Max法的标准化数据示意图。
[0020]附图7是本发明实施例Z-Score法的标准化数据示意图。
[0021]附图8是本发明实施例分析结果示意图。
【具体实施方式】
[0022]下面结合附图对本发明的一种小文件存储效率的优化方法作以下详细说明。
[0023]如附图1、图2所示,本发明提供一种小文件存储效率的优化方法,基于HDFS的存储系统,采用序列文件技术将小文件合并为大文件,结合多属性决策理论和实验得出合并文件的最优方式,通过基于层次分析法(analytic hierarchy process, ΑΗΡ)的系统负载预测算法实现系统的负载均衡。其具体优化步骤为:
一、序列文件合并:序列文件(SequenceFile)是HDFS提供的一种二进制文件技术,这种二进制文件直接将对序列化到文件,文件序列化时可实现基于记录或数据块的压缩。在存储系统中,对二进制文件采用SequenceFile技术将小文件合并为大文件,以小文件的索引号为key、内容为value的形式进行合并,合并的同时实现基于数据块的压缩,这样,在节省名称节点内存空间的同时也节省了数据节点的磁盘空间。
[0024]二、对小文件存储效率优化:
为提高对小文件的处理效率,系统为每个用户建立了 3种队列:第I种为序列文件队列(SequenceFile queue, SFQ),第 2 种为序列文件操作队列(SequenceFile operationqueue, SFOQ),第3种为备用队列(Backup queue, BQ)。其中,SFQ用于小文件的合并,SFOQ用于对合并后小文件的操作,BQ用于操作的小文件数超过SFQ或SFOQ长度的情况。3种队列的长度一致,可通过实验得出队列长度的最优值。
[0025]如图1所示,用户将本地的文件上传至云存储服务器,即附图中的过程I ;然后服务器开始对该文件的类型进行判断,即附图中的过程2;如果是小文件,将该文件的索引号放入SFQ中,即附图中的过程3 ;当SFQ满时,将发送“队列满”信号QF给控制器,如图中虚线口所示,而当定时器到定时点时,将发送“时间到”信号TU给控制器,如虚线b所示。接收到QF或者TU信号后,控制器开始读取SFQ的相关信息,即附图中的过程4.1 ;对系统负载进行计算,即附图中的过程4.2 ;并据此决定是否进行小文件的合并,即附图中的过程5。文件合并后完成小文件与大文件之间的映射,即附图中的过程6。
[0026]控制器的具体处理逻辑如图2所示:当控制器接收到信号时,首先判断信号类型,如果是QF,则调用基于AHP的系统负载预测算法计算系统负载。如果得到的系统负载低于系统设定的阈值,则开始合并文件,包括SFQ和BQ,并取消系统中的TU信号;如果系统负载大于系统设定的阈值,则进一步判断BQ的数量,若BQ数量小于某个值,例如3,则新建BQ,将SFQ转移到BQ中并推迟合并操作,系统中设定推迟的时间为30 min,设定TU信号,若BQ数量大于3,则将BQ中的小文件进行合并,取消系统中的TU信号。
[0027]如果接收到的是TU信号,计算系统负载并判断是否大于系统设定的阈值。若负载大于阈值,则推迟合并操作并设定TU信号;若负载小于阈值,则合并BQ中的小文件,取消系统中的其他TU信号。
[0028]所述存储系统中采用多叉树的结构来构建文件索引,当用户将文件上传到存储系统后,系统会自动根据用户文件的组织形式建立对应的多叉树索引。
[0029]所述系统负载预测算法是指基于层次分析法的算法:
系统负载预测通常定义为基于CPU利用率、内存利用率、带宽利用率和系统平均吞吐量等系统属性对系统运行状态进行的多属性决策。
[0030]层次分析法(AHP)是美国运筹学家托马斯萨迪提出的一种层次权重决策分析方法,是对定性问题进行定量分析的一种简便、灵活而又实用的多准则决策方法。
[0031]负载计算得到的是一个即时值或历史值,即只能够得到当前或以前时刻的系统负载,然而对小文件的操作是在系统负载计算之后,因此需要根据系统负载的历史信息来推测下一时刻的系统负载。基于此,本文设计了基于AHP的系统负载预测算法。该算法通过获取系统属性的历史信息,经过2次AHP分析,最终可得到系统负载的预测值。
[0032]算法依据系统属性的重要性,将每个时刻的系统负载属性值经过AHP分析融合为单一的决策属性值,然后依据决策属性值的时间重要性,经过第二次AHP分析最终得到下一时刻的系统负载值。
[0033]通过本发明提出的这一算法,可以实现对系统负载的预测,从而将对小文件的操作控制在某个能够均衡系统负载的时刻进行。
[0034]为提高小文件的操作效率,系统为每个用户建立了 SFQ和SF0Q,并如附图3、图4、图5所示的实施例所示,通过实验研究SFQ长度对存储系统的影响,选取读取文件时间、合并文件时间和节省的内存空间作为参考指标,以得到小文件合并的最优方式。
[0035]在基于HDFS的云存储系统中,对文件的操作主要有上传、下载、读取等。合并操作对上传没有影响,下载的核心操作也是读取,因此选取读取文件时间作为参考指标。提高名称节点内存利用率是本文的主要工作,因此将通过合并文件节省的内存空间作为参考指标之一。合并文件的效率是影响存储系统性能的一个重要因素,故也将合并文件时间作为参考指标。
[0036]实验方案与实验结果。
[0037]我们将通过3个实验分别获取在SequenceFile中读取小文件的平均时间、合并文件的平均时间以及合并所能节省的内存空间等指标值,并通过AHP分析数据,得出SFQ长度与系统性能的关系。6台浪潮服务器构成存储环境,服务器的配置均为CPU 8 Intel Xeon
2。13 GHz,内存 8 GB,硬盘 500 GB,操作系统均为 CentOS 6。04,Hadoop 版本为 1.20.00
[0038]实验I统计合并文件的平均时间tl。按照SFQ长度分别为100、200、300、400、500、600、700、800、900、1 000合并小文件50次,并且在不同的时段重复这样的实验10次。统计
这10种情况下合并文件所需时间的平均值,最终得到合并文件的时间,结果如图3所示。
[0039]实验2统计读取小文件的平均时间t2。小文件合并为SequenceFile之后,读取小文件的时间主要分为在SequenceFile中查找小文件的时间和获取小文件内容的时间两部分,因此,小文件合并之后读取文件的时间与该文件在SequenceFile中所处的位置有关。HDFS提供的API中采用顺序查找算法进行文件查找,因此读取的文件在SequenceFile中位置越靠后所需的时间越长。在实验I中得到的10个大文件中以10为步长读取小文件,获取其平均时间作为读取该大文件中小文件的平均时间,实验结果如图4所示。
[0040]实验3统计合并10000个小文件节省的内存空间。将10000个小文件上传到云存储系统,统计其占用名称节点的内存空间,然后分别按照SFQ长度为100、200、300、400、500、600、700、800、900、1 000进行合并,获取合并后占用名称节点的内存空间,两者之差即为合并操作所节省的内存空间,实验结果如图5所示。
[0041]实验结果分析:
数据标准化将实验指标转化为逆指标(越小越好的指标),分别利用Min-Max方法和Z-Score方法对转化为逆指标的实验数据进行标准化睁91,结果如图6、图7所示。
[0042]系统性能决策值计算利用AHP进行权重计算。由于读取文件是最频繁的操作,因此认定读取文件时间为3个指标中最重要的,节省的内存空间其次。据此,计算3个指标的权重如下表所示。
【权利要求】
1.一种小文件存储效率的优化方法,其特征在于其具体优化步骤为: 一、序列文件合并:所述序列文件是HDFS提供的一种二进制文件,在存储系统中,对二进制文件由小文件合并为大文件,以小文件的索引号为key、内容为value的形式进行合并,合并的同时实现基于数据块的压缩; 二、对小文件存储效率优化: O由存储系统为每个用户建立三种队列:第一种为序列文件队列SFQ,用于小文件的合并;第二种为序列文件操作队列SFOQ,用于对合并后小文件的操作;第三种为备用队列BQ,用于操作的小文件数超过第一种或第二种长度的情况; 2)用户将本地的文件上传至云存储服务器; 3)服务器开始对该文件的类型进行判断; 4)如果是小文件,将该文件的索引号放入SFQ中; 5)当SFQ满时,将发送“队列满”信号给控制器,而当定时器到定时点时,将发送“时间至IJ ”信号给控制器; 6)接收到“队列满”或者“时间到”信号后,控制器开始读取SFQ的相关信息; 7)对系统负载进行计算,并据此决定是否进行小文件的合并; 8)文件合并后完成小文件与大文件之间的映射。
2.根据权利要求1所述的一种小文件存储效率的优化方法,其特征在于:所述存储系统中采用多叉树的结构来构建文件索引,当用户将文件上传到存储系统后,系统会自动根据用户文件的组织形式建立对应的多叉树索引。
3.根据权利要求2所述的一种小文件存储效率的优化方法,其特征在于:所述步骤5)?步骤8)中的控制器的具体处理逻辑为: 当控制器接收到信号时,首先判断信号类型,如果是“队列满”信号,则调用系统负载预测算法计算系统负载: 如果得到的系统负载低于系统设定的阈值,则开始合并文件,并取消系统中的“时间至IJ”信号;如果系统负载大于系统设定的阈值,则进一步判断BQ的数量:若BQ数量小于某个值,则新建BQ,将SFQ转移到BQ中并推迟合并操作,设定“时间到”信号,若BQ数量大于该某个值,则将BQ中的小文件进行合并,取消系统中的“时间到”信号; 如果接收到的是“时间到”信号,计算系统负载并判断是否大于系统设定的阈值: 若负载大于阈值,则推迟合并操作并设定“时间到”信号;若负载小于阈值,则合并BQ中的小文件,取消系统中的其他“时间到”信号。
4.根据权利要求1?3中任一所述的一种小文件存储效率的优化方法,其特征在于:所述系统负载预测算法是指基于层次分析法的算法:通过获取系统属性的历史信息,经过2次层次分析法分析,最终得到系统负载的预测值。
5.根据权利要求4所述的一种小文件存储效率的优化方法,其特征在于:所述系统负载预测算法的详细过程为:算法依据系统属性的重要性,将每个时刻的系统负载属性值经过层次分析法分析融合为单一的决策属性值,然后依据决策属性值的时间重要性,经过第二次层次分析法分析最终得到下一时刻的系统负载值。
【文档编号】G06F17/30GK103678579SQ201310672912
【公开日】2014年3月26日 申请日期:2013年12月12日 优先权日:2013年12月12日
【发明者】张立雨 申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1