CN103577123B - 一种基于hdfs的小文件优化存储方法 - Google Patents
一种基于hdfs的小文件优化存储方法 Download PDFInfo
- Publication number
- CN103577123B CN103577123B CN201310561745.0A CN201310561745A CN103577123B CN 103577123 B CN103577123 B CN 103577123B CN 201310561745 A CN201310561745 A CN 201310561745A CN 103577123 B CN103577123 B CN 103577123B
- Authority
- CN
- China
- Prior art keywords
- small documents
- file
- metadata
- key
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于HDFS的小文件优化存储方法,提高HDFS对小文件的读取效率,提升***的整体性能。包括以下步骤:1)小文件合并与存储预处理,通过对文件过滤、小文件合并、元数据的生成、对象ID的生成实现小文件存储预处理。2)文件以合并的方式存储到HDFS中后,小文件与HDFS中合并文件的映射关系以文件元数据的形式存储到小文件元数据中,文件的目录结构存储在文件名中。元数据采用基于Chord协议的分布式集群存储。3)文件目录结构优化,将元数据键值key的生成分解为DirectoryID和SmallFileID。DirectoryID作为元数据跳转到元数据集群中结点的key值,实现了同一目录下文件存储到同一结点。SmallFileID在元数据结点中生成,实现每一个元数据对应一个全局唯一的ID标识。
Description
技术领域
本发明涉及一种基于HDFS的小文件优化存储方法,具体是一种对分布式、海量小文件数据实现优化存储的方法,属于分布式数据优化存储领域。
背景技术
随着互联网技术的飞速发展,数据量呈指数级增长,现在这样一个信息***的互联网时代,给互联网用户的生活带来了深远的影响。但是,对于互联网应用领域而言,如何去解决这些海量数据的存储是一个巨大挑战。在这些挑战下,传统的数据存储与处理技术,如关系型数据库,已经不能满足技术发展的需求,新兴的海量数据存储技术不断涌现。如Google公司使用的并行文件***GFS;海量数据MapReduce编程模型;亚马逊的SimpleStorageService(S3);Yahoo,Facebook等公司支持的开源软件Hadoop等。
Hadoop是近几年发展较快的云计算平台之一,凭借其可靠、高效、可伸缩的特性在大规模计算领域得到了广泛应用。HDFS作为Hadoop的分布式文件***,成为在集群上主流的海量存储件***。HDFS由一个NameNode和若干个DataNode组成,其中NameNode负责管理文件***的命名空间,DataNode是文件***的工作节点。HDFS采用主从式架构模式,简化了分布式文件***结构。HDFS对海量大文件的处理,能够提供高效的处理效率。但是,Hadoop在处理海量小文件时,就会出现以下问题:
(1)NameNode把文件***的元数据放置在内存中。虽然小文件的大小远小于HDFS默认的文件大小64MB,其占用的存储空间不多,但是小文件在NameNode中占用的内存大小与普通大文件相同。所以,当存储海量小文件时,元数据在NameNode中所占用的内存大量增加,从而导致HDFS对海量小文件存储性能较差。
(2)海量小文件访问效率低。在HDFS中,所有文件的元数据都存储在单一的NameNode内存中,一旦文件数量达到一定的规模后,内存中元数据过多。由于在NanmeNode内存中,元数据查找采用遍历检索方式,这样导致海量小文件检索访问效率明显下降。
(3)在HDFS中,采用单个独立的NameNode,静态划分的方法,对元数据进行管理与分布。这不仅存在单点失效的问题,同时对于大量小文件访问请求的情况下,***性能难以保证。需要使用一组名字节点进行分布式处理才能满足需求。
然而在实际应用中,从科学计算研究,到Web应用中都会产生大量的小文件。据NationalEnergyResearchScientificComputingCenter统计,在其拥有的13,000,000个文件中,约有99%的文件时小于64MB,其中43%的文件是小于64KB。2007年在太平洋西北国家实验室对其存储数据进行统计,发现其***中存储的12,000,000个文件中,94%的文件小于64MBtyes,58%的文件小于64KBtyes。淘宝图片存储***容量1800TB(1.8PB),已经占用空间990TB(约1PB),保存的图片文件数量达到286亿多个,这些图片文件包括根据原图生成的缩略图,平均图片大小是17.45K,其中8K以下占图片总量的61%,占存储容量的11%。在分布式文件***中,海量小文件的出现,对***I/O挑战从提供高并发的I/O吞吐量转向提供高并发的元数据存取效率。
在HDFS分布式文件***中,如何对海量小文件数据进行有效地存储与访问,提高存储和访问的效率是急需解决的问题,也是云存储面临的重要问题。
发明内容
发明目的:针对HDFS分布式文件***对海量小文件数据存储资源利用低,文件访问效率低的问题,本发明提供了一种基于HDFS的小文件优化存储方法,提高HDFS对小文件的读取效率,提升***的整体性能。
技术方案:一种基于HDFS的小文件优化存储方法,包括以下三个方面:
(1)小文件合并与存储预处理
(2)元数据分布式存储
(3)文件目录结构优化
(1)小文件合并与存储预处理采用的如下:
小文件合并与存储预处理主要分为四个流程,分别是文件过滤、文件合并、元数据生成、元数据对象ID生成。文件过滤和文件合并在客户端完成;元数据生成和元数据对象ID的生成在名字节点NameNode端完成。
①文件过滤:文件过滤是用来判断客户端传送的文件是否为小文件。本发明中设定1M为判断小文件的阈值,若文件大小小于1M,则判断此为小文件,并对小文件进行后续的合并等操作;否则若为大文件,则文件直接存在至HDFS的数据节点DataNode中。
②文件合并:由于HDFS属于日志文件类型,文件的添加方式属于尾部添加。文件合并将通过过滤的小文件以尾部添加的方式合并,生成合并文件。若新添加的小文件超过合并文件的剩余空间,则需要申请新的文件块。由于,HDFS中默认的磁盘块为64MB,本发明设定合并文件大小为64MB。在文件合并过程中,小文件向***输入小文件名SF_Name、文件长度SF_length、小文件标识位SF_Flag等信息。小文件经过合并后,向***输出合并后的文件名MF_Name、小文件在合并文件中的偏移量SF_offset、合并文件长度MF_length、合并文件标识位等信息MF_Flag。通过小文件合并前后输入与输出信息,***可以实现小文件与合并文件之间的映射。
③小文件元数据生成:小文件元数据包括小文件属性以及小文件到合并文件的映射关系。为了减轻名字节点NameNode的存储负载,优化HDFS对小文件的读写速度,在一个磁盘块中保存多个小文件,文件合并后将对此磁盘块操作的控制权转移到元数据集群。小文件的元数据以<key,value>键值对的形式存储在元数据集群。
根据小文件名SF_Name与其所在目录生成一个唯一的小文件标识符SF_ID,并将SF_ID作为小文件的元数据<key,value>的key值。
再根据小文件名SF_Name、合并文件名MF_Name、小文件在合并文件中的偏移量SF_offset、合并文件长度MF_length、合并文件标识位MF_Flag等信息封装为小文件的元数据<key,value>的value值。
④生成元数据对象ID:元数据以<key,value>键值对的形式存储,将key值采用SHA-1算法,计算得到hash值,再根据Hash值匹配到对应的存储节点,并将元数据<key,value>存储到此节点。
(2)元数据分布式存储
在HDFS中,采用主从式结构存储元数据,当数据增大时,内存空间的限制会成为小文件的瓶颈。命名空间层级采用B树的组织形式,其运算复杂度为O(logn)。为了提高海量小文件检索访问性能,将小文件以合并的方式存储到HDFS中后,小文件与HDFS中合并文件的映射关系以文件元数据的形式存储到小文件元数据中,文件的目录结构存储在文件名中。元数据采用基于Chord协议的分布式集群存储,可以实现将小文件的元数据以Key-Value对的形式存储,使其运算复杂度降至O(1)。当数据量增大时,可通过添加结点来缓解压力。
元数据的基本操作包括键值对生成,内容查找与对象ID定位,及更新集群结点。
①键值对生成:散列表的建立与散列值的产生都需要使用分布式哈希表(DHT),小文件存储到HDFS中后,NameNode生成了一个小文件的元数据。小文件的文件名命名采用文件全路径,包括文件的名称和文件所在的目录。使用SHA-1(SecureHashAlgorithm)安全散列算法,生成了一个键值key。
②内容查找与对象ID定位:定位对象ID所在的结点需要使用到关键值key与集群结点ID。基于DHT的***采用一个128位标识符空间,将随机选择的标识符赋给结点,含有键值key的键值对<key,value>位于含有大于键值最小标识符的结点之内,该结点被称为键值的后继者,用succ(k)表示。相比基础的DHT***,Chord算法不是线性的进行键值查找,而是维护一个最多有m个实体的指状表(FingerTable)。假设使用F表示结点p的指状表,则有Fp[i]=succ(p+2i-1),换句话说,第i个结点指向此结点后2i-1的第一个结点。一个查找需要O(logN)步,其中N为***中的结点数。
③更新集群结点:在元数据分布式存储集群中,参与的结点集合可能总是在变化。假如结点p要加入Chord***,只需与已有的***中的任意结点联系,并请求查找succ(p+1)。一旦标示了该结点,结点p就可以把自己***到该环(Chord***)中。
集群有结点加入或者结点离开时,每一个结点都需要有指状表的更新,每个结点p,当实体指向环中的下一个结点时,Fp[1]是正确的,即后继者是p+1。每个结点p定期地运行一个进程来与succ(p+1)联系,并请求返回pred(succ(p+1))。如果p=pred(succ(p+1)),那么p就知道它的信息与其后继者的是一致的。否则,如果p的后继者更新了它的前继者,那么显然有一个新的结点q加入该***,而且有p<q≤succ(p+1),这样p就需要将其Fp[1]调整为指向q。此时,检查q是否将p记作其前继者。如果没有,就需要再次调整Fp[1]。
(3)文件目录结构优化
原有的Hadoop集群通过多叉树的方式,实现了名称空间的结构化。将小文件元数据存储到元数据集群中后,小文件元数据以Key-Value对的方式存储到Chord集群的各个结点中,在这种分布式的情况下,无法实现文件目录的操作。同时,由于不同的文件名计算出的Hash值也有很大差异,所以很难保证同一个目录中的小文件的元数据存储在同一个结点中。本发明提出文件目录结构优化,即将文件目录层次结构写到对象块的ID中(即目录ID),反映对象之间的命名空间关系,实现元数据索引本地化,同时将HDFS作为基础的文件存储管理***,抽象出文件的目录结构,方便小文件读取。
本发明中提到的元数据包括目录元数据和文件元数据。目录元数据包含路径命名空间和目录属性;小文件元数据包括小文件属性以及小文件到数据块的映射关系。目录结构优化是将元数据键值key的生成分解为DirectoryID和SmallFileID。DirectoryID在NameNode端生成,作为元数据跳转到元数据集群中结点的key值,实现了同一目录下文件存储到同一结点。SmallFileID在元数据结点中生成,实现每一个元数据对应一个全局唯一的ID标识。
根据多叉树深度遍历的方式,本发明提出了基于深度的分配算法:给每一个目录层次分配一个空间段,空间段由一个或者多个位组成,分配顺序位从左向右。采用多叉树深度遍历方式,可以实现小文件快速定位与访问。
目录结构优化后,读取元数据分为三个部分:
①文件目录解析:将文件路径以字符串数组的方式存储,计算并初始化目录的层数,然后使用基于深度分配算法实现将文件目录转换为DirectoryID。
②文件名解析:解析得到DirectoryID后,根据Chord协议,跳转到相应结点,对文件名进行解析,将解析结果与DirectoryID相加后,得到SmallFileID。
③查找对应的元数据:元数据存储在以SmallFileID为key值,元数据为value值的<key,value>键值对数组中。采用折半查找法,快速查找小文件元数据。
有益效果:与现有技术相比,本发明提供的基于HDFS的小文件优化存储方法,通过对文件过滤、小文件合并、元数据的生成、对象ID的生成实现小文件存储预处理、元数据分布式存储以及文件目录结构优化,提高HDFS对小文件的读取效率,提升***的整体性能。
附图说明
图1为本发明实施例的基于HDFS小文件优化存储方法的总体框架图;
图2为本发明实施例中小文件合并前输入的信息结构图;
图3为本发明实施例中小文件合并后输出的信息结构图;
图4为本发明实施例中小文件元数据结构图;
图5为本发明实施例中元数据对象ID的数据结构图;
图6为本发明实施例中基于HDFS的目录优化结构图;
图7为本发明实施例中小文件存储过程;
图8为本发明实施例中小文件读取过程;
图9为本发明实施例中小文件删除过程。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
图1为本发明提供的基于HDFS小文件优化存储方法的总体框架图,其工作过程如下所描述:
①当客户端需要向DataNode节点存储小文件时,首先,文件过滤模块对文件进行过滤,判断客户端传送的文件是否为小文件。若文件大小小于1M,则判断此为小文件,并对小文件进行后续的合并等操作;否则若为大文件,则文件直接存在至HDFS的数据节点DataNode中。
②文件合并模块,对过滤后的小文件以尾部添加的方式合并,生成合并文件。若新添加的小文件超过合并文件的剩余空间,则需要申请新的文件块。在文件合并过程中,小文件向***输入小文件名SF_Name、文件长度SF_length、小文件标识位SF_Flag等信息,见附图2所示。小文件经过合并后,向***输出合并后的文件名MF_Name、小文件在合并文件中的偏移量SF_offset、合并文件长度MF_length、合并文件标识位等信息MF_Flag,见附图3所示。通过小文件合并前后输入与输出信息,***可以实现小文件与合并文件之间的映射。
③元数据生成模块负责生成小文件元数据,反映小文件到合并后文件的映射关系。为了减轻名字节点NameNode的存储负载,优化HDFS对小文件的读写速度,小文件的元数据以<key,value>键值对的形式存储在元数据集群。
其中,小文件名SF_Name与其所在目录生成一个唯一的小文件标识符SF_ID,并将SF_ID作为小文件的元数据<key,value>的key值。另一方面,根据小文件名SF_Name、合并文件名MF_Name、小文件在合并文件中的偏移量SF_offset、合并文件长度MF_length、合并文件标识位等信息MF_Flag信息封装为小文件的元数据<key,value>的value值,见附图4所示。
④元数据对象ID生成模块负责根据小文件元数据以<key,value>键值对生成元数据对象ID。将key值采用SHA-1算法,计算得到Hash值,再根据Hash值匹配到对应的存储节点,并将元数据<key,value>存储到此节点。元数据对象ID的数据结构见附图5所示。
附图5是以一个基于64位对象ID空间为例,元数据对象ID的标识位及其作用。其中前4位为特殊区域,其余60位表示小文件定位区域。
标志位0x0:普通段用来没有溢出的文件或者文件夹的命名空间扁平化。比如,每个目录段分配3位,8位用来存放目录中的文件,通过计算,得出文件拥有18个目录层次,每层拥有255个文件。
标志位0x1:用来标识目录层次过多。当文件深入到第19层时,便会出现越位,此时,使用之前的保留的标志位0x1。还是使用原有的分配方法,只是将旧的文件目录中最里面的9层目录保留,剩下9层记录新的目录层次。这样的好处是能记录更多更深入的层次。
标志位0x2,用来标识一个目录中文件数量过多。如果文件数量过多,文件夹中的文件超过255个时。也会出现越位的情况。解决的方案也和解决目录过深的方案类似。首先标记保留位为0x2,然后保留其最里面的9层目录,这样的话,可以多余出27位留给文件。这样一个文件夹可以保留的文件数量为三千多万的文件数量。按照小文件元数据的存储,一个如果保留这么多文件所需要的内存约为6G。
标志位0x3,用来标识目录和文件数量均超过可标识的范围。在最后一个标志位的对象ID采用先到先分配的算法。
⑤为了海量小文件检索访问性能,将小文件以合并的方式存储到HDFS中后,小文件与HDFS中合并文件的映射关系以文件元数据的形式存储到小文件元数据中,文件的目录结构存储在文件名中。元数据采用基于Chord协议的分布式集群存储,可以实现将小文件的元数据以<Key-Value>对的形式存储。当数据量增大时,可通过添加结点来缓解压力。附图6是基于HDFS的目录优化结构图。
在Hadoop集群之上引入树形目录结构。目录层的索引存储在NameNode中,小文件元数据存储在相应的元数据集群结点上。目录结构优化将元数据Key值的生成分解为DirectoryID和SmallFileID两个部分。DirectoryID在NameNode端生成,作为元数据跳转到元数据集群中结点的Key值,实现了同一目录下的文件存储到同一结点中。SmallFileID在元数据结点中生成,实现了每一个元数据对应一个全局唯一的ID标示。
⑥当用户在客户端读取小文件时,与传统客户端请求时只返回一个元数据对象相比,采用元数据集群,可以返回更多相关对象的元数据,并对相关对象的元数据统一编排。为了提高小文件访问性能,本发明中客户端采用始终预读取技术,即每次I/O操作时,无论是否命中cache资源,都执读取客户请求的小文件之后的10个数据。
图7为本发明方法中小文件存储流程图,其过程如下:
小文件存储***包括小文件存储预处理、元数据分布存储、及文件目录结构优化等步骤。从附图7可以看出,首先是准备将文件存入HDFS的DataBlock中然后经过文件过滤模块将文件大于阈值(设定为1M)的文件过滤出来若大于阈值的文件认定为非小文件,直接存入HDFS的DataNode分配的Block中否则将小于阈值的文件直接传递到文件合并模块。申请合并文件块判断申请到的合并文件是否有足够的空间能存放当前的小文件,若足够大,则以尾部添加的方式追加到合并文件中然后将小文件与合并文件之间的映射信息赋值到合并文件中否则重新申请合并文件块生成新的数据块并添加小文件。
以上步骤都是在客户端完成。以下步骤将由NameNode端处理完成小文件元数据的生成和小文件数据存储到Chord中。接着,将小文件对应的数据块ID、文件在块中的偏移量、小文件长度、以及相关的其他属性封装为元数据,并作为Value值(元数据的格式及内容见图4),并且根据文件目录生成一个唯一的ID标识—SmallFileID;使用基于深度的路径命名算法对小文件的目录进行分析计算,得到对应的目录ID——DirectoryID,并作为Key值。于是,使用SHA-1计算出Key的散列值将此散列值信息送到分布式散列表中的任意参与结点,此信息根据Chord算法在网络中与各个节点的Hash值进行比较,并将这个<key,value>键值对存储在相应的结点上
图8为本发明方法中小文件读取过程流程图,其过程如下:
客户端发送读取请求,调用小文件读取模块首先,判断Hadoop集群中是否存在该文件,若存在,则直接链接到指定的DataNode并返回请求的文件;若在集群中没有查找到文件则计算元数据的目录ID。然后,将目录ID的HASH散列值在Chord元数据集群中查找此目录ID是否在目录中。若目录中没有,则判断此文件不存在否则,则根据目录ID跳转到相应的结点中接着,在结点中查找此小文件对应的元数据是否存在如果不存在,则说明此小文件不存在否则,判断在Chord环中查找指定ID对应的元数据结点再根据元数据,链接到指定的DataNode中读取小文件,并返回请求的文件
图9为本发明方法中小文件删除过程流程图,其过程如下:
客户端发送删除文件请求,调用小文件删除模块若文件不存在,则删除文件失败否则,在小文件所在的DataNode数据块中将此文件标识为“删除文件”同时,在元数据集群中,将其标识位MF_Flag设置为0,表示文件为不可用为了防止用户需要恢复文件,文件被标识为“删除文件”后,不会立刻删除,***采取定期清理的方式将元数据MF_Flag设置为0的所有元数据从Chord环中删除然后将其对应的小文件从其所在的DataNode数据块中彻底删除
根据以上实施例可知,针对HDFS分布式文件***对海量小文件数据存储资源利用低,文件访问效率低的问题,本发明的方法,提高HDFS对小文件的读取效率,提升***的整体性能。在此发明中,通过对文件过滤、小文件合并、元数据的生成、对象ID的生成实现小文件存储预处理。利用分布式哈希表DHT,构建基于Chord环的元数据集群,改善原有DHFS中单个NameNode对元数据管理的方式,采用Chord环的路由表查找小文件,提高其访问效率。此外,对目录结构进行优化,将文件目录层次结构写到对象块的ID中;通过目录ID指向Chord中的结点,使得相关联的小文件元数据存放于同一目录下,促使元数据索引本地化,更好地方便小文件的读取。
Claims (5)
1.一种基于HDFS的小文件优化存储方法,用于海量小文件数据的存储管理,其特征在于,包括三个方面:小文件合并与存储预处理,元数据分布式存储,以及文件目录结构优化;
1)小文件合并与存储预处理:通过对文件过滤、小文件合并、元数据的生成、对象ID的生成实现小文件存储预处理;文件过滤和文件合并在客户端完成;元数据生成和元数据对象ID的生成在名字节点NameNode端完成;文件过滤是用来判断客户端传送的文件是否为小文件;文件合并将通过过滤的小文件以尾部添加的方式合并,生成合并文件;若新添加的小文件超过合并文件的剩余空间,则需要申请新的文件块;通过小文件合并前后输入与输出信息,***可以实现小文件与合并文件之间的映射,映射关系以小文件元数据<key,value>键值对的形式存储在元数据集群,同时生成元数据对象ID,即目录ID,包括路径命名空间和目录属性,并作为目录元数据;
2)元数据分布式存储:小文件元数据<key,value>键值对采用基于Chord协议的分布式集群存储;通过目录ID指向Chord中的相应结点,使得相关联的小文件的元数据存放于同一目录下;
3)文件目录结构优化:将文件目录层次结构写到对象块的ID中,即目录ID中,使其能够反映对象之间的命名空间关系,实现元数据索引本地化;目录结构优化是将元数据键值key的生成分解为DirectoryID和SmallFileID;DirectoryID作为元数据跳转到元数据集群中结点的key值,实现了同一目录下文件存储到同一结点;SmallFileID在元数据结点中生成,实现每一个元数据对应一个全局唯一的ID标识;根据多叉树深度遍历方式,采用基于深度的目录层次空间分配算法,实现小文件快速定位与访问。
2.根据权利要求1所述的基于HDFS的小文件优化存储方法,其特征在于,所述步骤1)进一步包含以下步骤:1.1)判断客户端传送的文件是否为小文件;设定小文件的阈值为1M,若文件大小小于1M,则为小文件,并转为1.2);否则若为大文件,则文件直接存在至HDFS的数据节点DataNode中;1.2)通过过滤的小文件以尾部添加的方式合并,生成合并文件;若新添加的小文件超过合并文件的剩余空间,则需要申请新的文件块,其中设定合并文件大小为64MB;
1.3)在文件合并过程中,小文件向***输入小文件名SF_Name、文件长度SF_length和小文件标识位SF_Flag信息;
1.4)小文件经过合并后,向***输出合并后的文件名MF_Name、小文件在合并文件中的偏移量SF_offset、合并文件长度MF_length和合并文件标识位MF_Flag信息;
1.5)根据小文件名SF_Name与其所在目录生成一个唯一的小文件标识符SF_ID,并将SF_ID作为小文件的元数据<key,value>的key值;
1.6)将小文件名SF_Name、合并文件名MF_Name、小文件在合并文件中的偏移量SF_offset、合并文件长度MF_length和合并文件标识位MF_Flag信息封装为小文件的元数据<key,value>的value值;实现小文件与合并文件之间的映射;
1.7)生成元数据对象ID,即目录ID;小文件的文件名命名采用文件全路径,包括文件的名称和文件所在的目录;使用SHA-1安全散列算法,生成了一个键值key,并将元数据以<key,value>存储到此节点,生成目录ID。
3.根据权利要求2所述的基于HDFS的小文件优化存储方法,其特征在于,所述步骤2)进一步包含以下步骤:
2.1)小文件的元数据以<Key-Value>键值对形式,基于Chord协议的分布式集群进行存储;文件的目录结构存储在文件名中;
2.2)定位对象ID所在的结点需要使用到关键值key与集群结点ID;基于DHT的***采用一个128位标识符空间,将随机选择的标识符赋给结点,含有键值key的键值对<key,value>位于含有大于键值最小标识符的结点之内,该结点被称为键值的后继者,用succ(k)表示;Chord协议通过维护一个最多有m个实体的指状表;假设使用F表示结点p的指状表,则有Fp[i]=succ(p+2i-1),换句话说,第i个结点指向此结点后2i-1的第一个结点;一个查找需要O(logN)步,其中N为***中的结点数;
2.3)集群有结点加入或者结点离开时,每一个结点都需要有指状表的更新,每个结点p,当实体指向环中的下一个结点时,Fp[1]是正确的,即后继者是p+1;每个结点p定期地运行一个进程来与succ(p+1)联系,并请求返回pred(succ(p+1));如果p=pred(succ(p+1)),那么p就知道它的信息与其后继者的是一致的;否则,如果p的后继者更新了它的前继者,那么显然有一个新的结点q加入该***,而且有p<q≤succ(p+1),这样p就需要将其Fp[1]调整为指向q;此时,检查q是否将p记作其前继者;如果没有,就需要再次调整Fp[1]。
4.根据权利要求3所述的基于HDFS的小文件优化存储方法,其特征在于,所述步骤3)进一步包含以下步骤:
3.1)将元数据键值key的生成分解为DirectoryID和SmallFileID;DirectoryID在NameNode端生成,作为元数据跳转到元数据集群中结点的key值,实现了同一目录下文件存储到同一结点;SmallFileID在元数据结点中生成,实现每一个元数据对应一个全局唯一的ID标识;
3.2)根据多叉树深度遍历的方式,基于深度的分配算法给每一个目录层次分配一个空间段,空间段由一个或者多个位组成,分配顺序位从左向右;
3.3)采用多叉树深度遍历方式,对小文件定位与访问。
5.根据权利要求4所述的基于HDFS的小文件优化存储方法,其特征在于,所述步骤3.3)进一步包含以下步骤:
3.3.1)文件目录解析:将文件路径以字符串数组的方式存储,计算并初始化目录的层数,然后使用基于深度分配算法实现将文件目录转换为DirectoryID;
3.3.2)文件名解析:解析得到DirectoryID后,根据Chord协议,跳转到相应结点,对文件名进行解析,将解析结果与DirectoryID相加后,得到SmallFileID;
3.3.3)元数据存储在以SmallFileID为key值,元数据为value值的<key,value>键值对数组中;采用折半查找法,查找小文件元数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310561745.0A CN103577123B (zh) | 2013-11-12 | 2013-11-12 | 一种基于hdfs的小文件优化存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310561745.0A CN103577123B (zh) | 2013-11-12 | 2013-11-12 | 一种基于hdfs的小文件优化存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103577123A CN103577123A (zh) | 2014-02-12 |
CN103577123B true CN103577123B (zh) | 2016-06-22 |
Family
ID=50048989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310561745.0A Active CN103577123B (zh) | 2013-11-12 | 2013-11-12 | 一种基于hdfs的小文件优化存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577123B (zh) |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103927333A (zh) * | 2014-03-24 | 2014-07-16 | 联想(北京)有限公司 | 一种信息处理方法、***及电子设备 |
CN103856567B (zh) * | 2014-03-26 | 2017-05-17 | 西安电子科技大学 | 基于Hadoop分布式文件***的小文件存储方法 |
CN104978330A (zh) * | 2014-04-04 | 2015-10-14 | 西南大学 | 一种数据存储的方法及装置 |
CN103970869A (zh) * | 2014-05-12 | 2014-08-06 | 浙江宇视科技有限公司 | 一种大文件存储方法 |
CN104133882B (zh) * | 2014-07-28 | 2017-06-23 | 四川大学 | 一种基于hdfs的小文件处理方法 |
CN105468642A (zh) * | 2014-09-09 | 2016-04-06 | 杭州海康威视数字技术股份有限公司 | 数据的存储方法及装置 |
CN104536959B (zh) * | 2014-10-16 | 2018-03-06 | 南京邮电大学 | 一种Hadoop存取海量小文件的优化方法 |
CN105630810B (zh) * | 2014-10-30 | 2019-05-21 | 曙光信息产业股份有限公司 | 一种对于海量小文件在分布式存储***中上载的方法 |
CN104516945A (zh) * | 2014-11-18 | 2015-04-15 | 国家电网公司 | 一种基于关系数据库的hdfs元数据存储方法 |
CN104408159B (zh) * | 2014-12-04 | 2018-01-16 | 曙光信息产业(北京)有限公司 | 一种数据关联、加载、查询方法及装置 |
CN104536700B (zh) * | 2014-12-22 | 2017-07-07 | 深圳市博瑞得科技有限公司 | 一种码流数据的快速存储/读取方法及*** |
CN104462563B (zh) * | 2014-12-26 | 2019-04-30 | 浙江宇视科技有限公司 | 一种文件存储方法和*** |
CN104965845B (zh) * | 2014-12-30 | 2017-04-12 | 浙江大华技术股份有限公司 | 一种小文件的定位方法及*** |
CN104778270A (zh) * | 2015-04-24 | 2015-07-15 | 成都汇智远景科技有限公司 | 一种用于多文件的存储方法 |
CN104765876B (zh) * | 2015-04-24 | 2017-11-10 | 中国人民解放军信息工程大学 | 海量gnss小文件云存储方法 |
CN106294374B (zh) * | 2015-05-15 | 2019-06-04 | 北京国双科技有限公司 | 小文件合并的方法和数据查询*** |
CN104820717B (zh) * | 2015-05-22 | 2019-05-21 | 全球能源互联网研究院 | 一种海量小文件存储及管理方法和*** |
CN105205126B (zh) * | 2015-09-11 | 2018-08-24 | 武汉云空间地理信息技术有限公司 | 一种地图瓦片的存储方法及其存储*** |
CN105404652A (zh) * | 2015-10-29 | 2016-03-16 | 河海大学 | 一种基于hdfs的海量小文件处理方法 |
CN105404653B (zh) * | 2015-10-30 | 2019-03-26 | 无锡清华信息科学与技术国家实验室物联网技术中心 | 一种全分布式文件索引及协作编辑机制的实现方法 |
CN105516240A (zh) * | 2015-11-23 | 2016-04-20 | 浪潮(北京)电子信息产业有限公司 | 一种集群存储***的读写性能动态优化框架及方法 |
CN105404691A (zh) * | 2015-12-14 | 2016-03-16 | 曙光信息产业股份有限公司 | 一种文件存储的方法及装置 |
CN105573674A (zh) * | 2015-12-15 | 2016-05-11 | 西安交通大学 | 一种面向海量小文件的分布式存储方法 |
CN105631010A (zh) * | 2015-12-29 | 2016-06-01 | 成都康赛信息技术有限公司 | 一种基于hdfs小文件存储的优化方法 |
CN105608212B (zh) * | 2015-12-30 | 2020-02-07 | 成都国腾实业集团有限公司 | 一种确保MapReduce的数据输入分片包含完整记录的方法与*** |
CN105653592A (zh) * | 2016-01-28 | 2016-06-08 | 浪潮软件集团有限公司 | 一种基于hdfs的小文件合并工具和方法 |
CN107045422B (zh) * | 2016-02-06 | 2020-12-01 | 华为技术有限公司 | 分布式存储方法和设备 |
CN105843841A (zh) * | 2016-03-07 | 2016-08-10 | 青岛理工大学 | 一种小文件存储方法和*** |
CN105868286B (zh) * | 2016-03-23 | 2019-03-12 | 中国科学院计算技术研究所 | 基于分布式文件***小文件合并的并行追加方法及*** |
CN105933376B (zh) * | 2016-03-31 | 2019-09-03 | 华为技术有限公司 | 一种数据操作方法,服务器及存储*** |
CN107704462B (zh) * | 2016-08-08 | 2021-07-06 | 阿里巴巴集团控股有限公司 | 资源的元数据维护方法、设备及存储装置 |
CN106446099A (zh) * | 2016-09-13 | 2017-02-22 | 国家超级计算深圳中心(深圳云计算中心) | 一种分布式云存储方法、***及其上传下载方法 |
CN106484821A (zh) * | 2016-09-27 | 2017-03-08 | 浪潮软件集团有限公司 | 一种云计算架构下的混合云存储方法 |
CN106570113B (zh) * | 2016-10-25 | 2022-04-01 | 中国电力科学研究院 | 一种海量矢量切片数据云存储方法及*** |
CN106528451B (zh) * | 2016-11-14 | 2019-09-03 | 哈尔滨工业大学(威海) | 针对小文件的二级缓存预取的云存储框架及构建方法 |
CN106709010A (zh) * | 2016-12-26 | 2017-05-24 | 上海斐讯数据通信技术有限公司 | 一种基于海量小文件高效上传hdfs的方法及*** |
CN106844584B (zh) * | 2017-01-10 | 2019-12-17 | 清华大学 | 元数据结构和基于其的操作方法、定位方法、切分方法 |
CN106909651A (zh) * | 2017-02-23 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于hdfs小文件写入和读取的方法 |
CN107016130A (zh) * | 2017-05-18 | 2017-08-04 | 郑州云海信息技术有限公司 | 一种文件存储的方法及装置 |
CN109101508A (zh) * | 2017-06-20 | 2018-12-28 | 杭州海康威视数字技术股份有限公司 | 小文件归档、读取方法及装置、电子设备 |
CN107291915A (zh) * | 2017-06-27 | 2017-10-24 | 北京奇艺世纪科技有限公司 | 一种小文件存储方法、小文件读取方法及*** |
CN107506447A (zh) * | 2017-08-25 | 2017-12-22 | 郑州云海信息技术有限公司 | 一种基于本地文件***的小文件读写方法及*** |
CN108287869A (zh) * | 2017-12-20 | 2018-07-17 | 江苏省公用信息有限公司 | 一种基于快速存储设备的海量小文件解决方法 |
CN110109866B (zh) * | 2017-12-28 | 2021-11-09 | 中移(杭州)信息技术有限公司 | 一种文件***目录的管理方法及设备 |
CN108595589A (zh) * | 2018-04-19 | 2018-09-28 | 中国科学院电子学研究所苏州研究院 | 一种海量科学数据图片高效存取方法 |
CN108932287B (zh) * | 2018-05-22 | 2019-11-29 | 广东技术师范大学 | 一种基于Hadoop的海量小文件写入方法 |
CN110636097B (zh) * | 2018-06-25 | 2021-04-06 | 马上消费金融股份有限公司 | 一种标识生成与管理方法及节点、***和存储装置 |
CN108958659A (zh) * | 2018-06-29 | 2018-12-07 | 郑州云海信息技术有限公司 | 一种分布式存储***的小文件聚合方法、装置及介质 |
CN109271361B (zh) * | 2018-08-13 | 2020-07-24 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 海量小文件的分布式存储方法和*** |
CN109063192B (zh) * | 2018-08-29 | 2021-01-29 | 江苏云从曦和人工智能有限公司 | 一种高性能海量文件存储***工作方法 |
CN109407985B (zh) * | 2018-10-15 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种数据管理的方法以及相关装置 |
CN109344119B (zh) * | 2018-10-24 | 2023-04-28 | 三六零科技集团有限公司 | 文件合并处理方法、装置、计算设备及计算机存储介质 |
CN109710180B (zh) * | 2018-12-07 | 2022-04-01 | 国云科技股份有限公司 | 一种分布式存储块设备恢复方法 |
CN109766318B (zh) * | 2018-12-17 | 2021-03-02 | 新华三大数据技术有限公司 | 文件读取方法及装置 |
CN109800208B (zh) * | 2019-01-18 | 2019-09-27 | 湖南友道信息技术有限公司 | 网络溯源***及其数据处理方法、计算机存储介质 |
CN110147203B (zh) * | 2019-05-16 | 2022-11-04 | 北京金山云网络技术有限公司 | 一种文件管理方法、装置、电子设备及存储介质 |
CN110502479A (zh) * | 2019-08-26 | 2019-11-26 | 重庆邮电大学 | 一种基于hdfs的海量医疗小文件分布式存储方法 |
CN110570928A (zh) * | 2019-09-11 | 2019-12-13 | 浪潮软件股份有限公司 | 一种基于HBase和ozone的医疗影像文件存取方法 |
CN110825715B (zh) * | 2019-11-08 | 2020-11-03 | 上海德拓信息技术股份有限公司 | 基于Ceph对象存储的多对象数据秒合的实现方法 |
CN111309687A (zh) * | 2020-01-21 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种对象存储小文件处理方法、装置、设备及存储介质 |
CN111723056B (zh) * | 2020-06-09 | 2024-04-30 | 北京青云科技股份有限公司 | 小文件的处理方法、装置、设备和存储介质 |
CN112905555A (zh) * | 2021-02-19 | 2021-06-04 | 广东云智安信科技有限公司 | 日志文件合并方法、***、设备及介质 |
CN113297400B (zh) * | 2021-05-31 | 2024-04-30 | 西北工业大学 | 一种3d打印模型的元数据提取方法 |
CN113590566B (zh) * | 2021-06-23 | 2023-10-27 | 河海大学 | 基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质 |
CN114356241B (zh) * | 2021-12-28 | 2023-11-03 | 天翼云科技有限公司 | 小对象数据的存储方法、装置、电子设备和可读介质 |
CN114116634B (zh) * | 2022-01-26 | 2022-04-22 | 苏州浪潮智能科技有限公司 | 一种缓存方法、装置及可读存储介质 |
CN115269524B (zh) * | 2022-09-26 | 2023-03-24 | 创云融达信息技术(天津)股份有限公司 | 一种端到端小文件归集传输和存储的一体化***及方法 |
CN115630021B (zh) * | 2022-12-13 | 2023-03-28 | 中国华能集团清洁能源技术研究院有限公司 | 大数据环境下对象存储中小文件合并方法和装置 |
CN116342230B (zh) * | 2023-05-31 | 2023-08-08 | 深圳洽客科技有限公司 | 一种基于大数据分析的电商数据存储平台 |
CN116991333B (zh) * | 2023-09-25 | 2024-01-26 | 苏州元脑智能科技有限公司 | 分布式数据存储方法、装置、电子设备及存储介质 |
CN117519608B (zh) * | 2023-12-27 | 2024-03-22 | 泰安北航科技园信息科技有限公司 | 一种以Hadoop为核心的大数据服务器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902716A (zh) * | 2012-08-27 | 2013-01-30 | 苏州两江科技有限公司 | 基于Hadoop分布式计算平台的存储*** |
CN103366016A (zh) * | 2013-08-01 | 2013-10-23 | 南京大学 | 基于hdfs的电子文件集中存储及优化方法 |
-
2013
- 2013-11-12 CN CN201310561745.0A patent/CN103577123B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102902716A (zh) * | 2012-08-27 | 2013-01-30 | 苏州两江科技有限公司 | 基于Hadoop分布式计算平台的存储*** |
CN103366016A (zh) * | 2013-08-01 | 2013-10-23 | 南京大学 | 基于hdfs的电子文件集中存储及优化方法 |
Non-Patent Citations (2)
Title |
---|
HDFS下小文件存储优化相关技术研究;江柳;《中国优秀硕士论文全文数据库》;20110915;I137-30 * |
一种Hadoop小文件存储和读取的方法;张春明,芮建武,何婷婷;《计算机应用与软件》;20121130;第29卷(第11期);95-100页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103577123A (zh) | 2014-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577123B (zh) | 一种基于hdfs的小文件优化存储方法 | |
US11030187B1 (en) | Distributed database systems and structures | |
CN106663056B (zh) | 文件***中的元数据索引搜索 | |
CN103229173B (zh) | 元数据管理方法及*** | |
US9830324B2 (en) | Content based organization of file systems | |
US9507799B1 (en) | Distributed object store for network-based content repository | |
US9542409B2 (en) | Deduplicated file system | |
CN103002027B (zh) | 基于键值对***实现树形目录结构的数据存储***及方法 | |
CN110321325A (zh) | 文件索引节点查找方法、终端、服务器、***及存储介质 | |
CN106484820A (zh) | 一种重命名方法、访问方法及装置 | |
CN106446099A (zh) | 一种分布式云存储方法、***及其上传下载方法 | |
US10515055B2 (en) | Mapping logical identifiers using multiple identifier spaces | |
CN106709010A (zh) | 一种基于海量小文件高效上传hdfs的方法及*** | |
WO2021016050A1 (en) | Multi-record index structure for key-value stores | |
CN103942301B (zh) | 一种面向多数据类型访问应用的分布式文件*** | |
CN105404653B (zh) | 一种全分布式文件索引及协作编辑机制的实现方法 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 | |
Zhu et al. | An IoT-oriented real-time storage mechanism for massive small files based on Swift | |
CN104537023A (zh) | 一种反向索引记录的存储方法及装置 | |
WO2021004295A1 (zh) | 一种元数据的处理方法、装置及计算机可读存储介质 | |
CN111782150A (zh) | 一种基于对象存储的多桶存储***及方法 | |
Wang et al. | The integrated organization of data and knowledge based on distributed hash | |
Alikhan et al. | Dingo optimization based network bandwidth selection to reduce processing time during data upload and access from cloud by user | |
Guzmán et al. | Creation of a distributed NoSQL database with distributed hash tables | |
Mao et al. | Storage and accessing small files based on HDFS |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20140212 Assignee: HUANENG LANCANG RIVER HYDROPOWER Inc. Assignor: HOHAI University Contract record no.: 2019320000021 Denomination of invention: Small file optimization storage method based on HDFS Granted publication date: 20160622 License type: Common License Record date: 20190228 |