CN102332029A - 一种基于Hadoop的海量可归类小文件关联存储方法 - Google Patents

一种基于Hadoop的海量可归类小文件关联存储方法 Download PDF

Info

Publication number
CN102332029A
CN102332029A CN201110312694A CN201110312694A CN102332029A CN 102332029 A CN102332029 A CN 102332029A CN 201110312694 A CN201110312694 A CN 201110312694A CN 201110312694 A CN201110312694 A CN 201110312694A CN 102332029 A CN102332029 A CN 102332029A
Authority
CN
China
Prior art keywords
index
fragment
small documents
file
length
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.)
Granted
Application number
CN201110312694A
Other languages
English (en)
Other versions
CN102332029B (zh
Inventor
郑庆华
董博
刘均
马瑞
宋凯磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Jiaotong University
Original Assignee
Xian Jiaotong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Jiaotong University filed Critical Xian Jiaotong University
Priority to CN 201110312694 priority Critical patent/CN102332029B/zh
Publication of CN102332029A publication Critical patent/CN102332029A/zh
Application granted granted Critical
Publication of CN102332029B publication Critical patent/CN102332029B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于Hadoop的海量可归类小文件关联存储方法,主要解决可归类小文件的存取效率问题。本发明包括NameNode端全局索引管理技术和文件聚合技术。针对属于某一类别的独立的小文件进行文件聚合和全局索引管理,大幅度提高了内存利用率,提高单位内存支持的最大文件数量。本发明包括:(1)将属于某一类别的小文件聚合成一个文件,称为逻辑单元;(2)对每一个小文件建立存放在NameNode内存中的全局索引。文件聚合技术用于提高可归类小文件的存储效率,NameNode端全局索引管理技术用于管理聚合后的小文件。通过以上技术,提高了海量可归类小文件的存储效率。本发明适用于通用场景下可归类小文件的存储和管理。

Description

一种基于Hadoop的海量可归类小文件关联存储方法
技术领域
本发明涉及海量可归类小文件在Hadoop(分布式文件系统)上的存储及读取优化方法,Hadoop是当前主流的云存储平台,它由一个NameNode和多个DataNode组成,其中NameNode负责管理文件系统名称空间和控制外部客户端的访问,DataNode负责存储数据,主要解决现有大规模可归类小文件存储及读取效率较低的问题。
背景技术
随着互联网的发展,需要存储的数据量日益庞大;而文件大小差异很大,从数千字节的小文件到数百兆字节的大文件。Hadoop分布式文件系统适合存储大文件,在存储小文件时其存储性能和读取性能严重下降。因此,如何有效地存储和管理大量的小文件,成为亟待解决的难题。针对如何有效地在分布式文件系统上存储海量的小文件、降低其读取延迟,申请人通过查新,得到3篇与本发明相关密切的专利,它们分别是:
1.一种集群存储中并行访问大量小文件的方法及系统(专利号:CN201010178387.1);
2.一种机群文件系统中的小文件存储和访问方法(专利号:CN201010208495.9;)
3.大批量文件数据存放和读取方法(专利号:CN200710199002.8)。
专利1提出了一种集群存储中并行访问大量小文件的方法及系统,该方法包括:对写入的小文件进行缓冲;将缓冲的多个小文件合并为一个临时文件;将所述临时文件的元数据和数据对象存储至元数据服务器节点和数据服务器节点的后端存储中,从而可以有效地提高集群文件系统服务的响应时间和速度,提升数据整体的单位时间数据读写次数、吞吐量。
专利2提出了一种机群文件系统中的小文件存储和访问方法。该方法有三大步骤:(1)设置阈值,区分大小文件;(2)在元数据服务器上,存储小文件的数据;(3)在元数据服务器上,进行小文件创建、读写和删除。由于该发明把小文件的数据存储在元数据服务器上,这样对于小文件的IO访问操作,如创建、读写和删除等,发起IO访问的客户端只需要与元数据服务器交互,无需与数据服务器交互,减少了小文件访问的网络延迟,提高了小文件IO的性能,从而从整体上提高了机群文件系统的IO性能。
专利3提出了一种大批量文件数据存取方法,包括将所有小文件的数据合并成一个大文件;建立每个小文件的文件名及其文件编号的一一对应关系;建立每个所述文件编号与小文件的文件信息的对应关系,所述文件信息包括所述小文件在所述大文件中的位置。相应地,该发明还公开一种大批量文件数据读取方法,用于读取按照本发明的存放方法存放的文件数据,包括步骤:根据小文件的文件名来获得所述小文件的文件编号;根据所述文件编号获得所述小文件的文件信息;根据所述文件信息获得所述小文件在大文件中的位置;根据所述小文件在大文件中的位置,通过所述大文件的IO接口实现对所述小文件数据的读取。
上述现有解决小文件存储问题的专利技术方案存在以下问题:
1.已有小文件存储效率的研究主要集中在非云存储的文件系统上,而不是针对云存储环境下的分布式文件系统,即Hadoop分布式文件系统上的存储优化方法;
2.现有专利虽然提出了合并小文件的方法,但在合并时没有考虑文件之间的关联关系。
发明内容
本发明的目的在于解决现有Hadoop分布式文件系统对大规模可归类小文件存储和读取效率低下的问题,根据可归类小文件特征,提出一种Hadoop分布式文件系统上可归类小文件的存储优化方法。
为达到以上目的,本发明是采取如下技术方案予以实现的:
一种基于Hadoop的海量可归类小文件关联存储方法,包括NameNode端全局索引管理技术和文件聚合技术。上述技术特征在于:(1)将属于某一类别的小文件聚合成一个文件,称之为逻辑单元;(2)对每一个小文件建立存放在Hadoop文件系统的NameNode内存中的全局索引。文件聚合技术用于提高可归类小文件存储效率,NameNode端全局索引管理技术用于管理聚合后的小文件。
所说的NameNode端全局索引管理技术包括:
全局索引文件加载在NameNode的内存中,扩展了NameNode的元数据结构,包括小文件索引集合和碎片索引集合;
(1)小文件索引集合采用二叉排序树结构,用来定位小文件,索引项包括文件名称(16字节)、偏移(4字节)、长度(4字节)、局部序列号(4字节),索引项按文件名排序,使用局部序列号记录文件聚合到逻辑单元的先后顺序,对小文件索引集合的操作主要有索引项的查找、插入和删除,这些操作与二叉排序树操作的相同;
(2)碎片索引集合采用二叉排序树结构,用来定位碎片。索引项包括偏移(4字节)和长度(4字节),索引项按碎片长度排序,对碎片索引集合的操作主要有索引项的查找、插入和删除,这些操作与二叉排序树的操作相同;
(a)当写入小文件时,对小文件索引集合和碎片索引集合的操作如下:
Step 1:对小文件索引集合,使用待写入小文件的文件名查找索引项,判断是否有重名文件存在,如果有重名文件,则返回写入失败,如果没有重名文件,则执行Step 2;
Step 2:对碎片索引集合,使用待写入小文件的长度查找索引项,判断是否有合适的碎片供存放写入文件;
Step 2.1:如果有,则将该碎片分为两个部分,前一部分分配给待写入小文件,后一部分碎片作为新的碎片,在碎片索引集合,删除原碎片的索引项,为新的碎片插入索引项,在小文件索引集合中插入新写入小文件的索引项;
Step 2.2:如果没有,对碎片索引集合不进行任何改动,直接在数据块末尾的空白区分配空间给小文件存储,并在小文件索引集合插入其索引项。
(b)当删除小文件时,对小文件索引集合和碎片索引集合的操作如下:
Step1:对小文件索引集合,使用待删除小文件的文件名查找索引项,判断是否存在该文件,若不存在则删除失败,如果存在,则执行Step 2;
Step2:在小文件索引集合中,删除该文件的索引项,在碎片索引集合,插入一条新的碎片索引项;
Step3:在碎片索引集合,判断新的碎片索引项其相邻的数据单元是否同样是碎片数据,如果存在任何一边的数据单元是空白索引,那么合并多个数据碎片成一个大的数据碎片,并更新碎片索引,当数据碎片的相邻碎片是由于数据块的分界造成时,不需要进行数据碎片的合并。
所说的文件聚合技术包括:
对可归类小文件采用动态聚合策略,将小文件聚合到其属于的逻辑单元,根据写请求中的逻辑单元名,NameNode判断该文件属于哪个逻辑单元,如果属于某逻辑单元,则将其聚合到该逻辑单元,如果无法判断文件属于哪个逻辑单元,则将其聚合到待定单元中,根据文件库的规模,设定Ntc个待定单元,用Nuf表示未找到逻辑单元的小文件的总数,Naf表示已经聚合到逻辑单元的总数,Nl表示逻辑单元的总数,则
N tc = N uf N af * N l * μ
其中μ<1,是待定因子。小文件具体聚合到哪个待定单元,可采取不同的策略,如采取轮询方式或通过Hash值分配方式,之后再根据文件的访问局部性,将待定单元中的文件归类到逻辑单元中;
聚合文件时采用碎片再分配策略,当小文件(记作Frq)聚合到逻辑单元时,检查碎片并将Frq填充到碎片,NameNode首先读取逻辑单元的碎片索引集合,查询是否有合适的碎片供Frq填充,如果有合适的碎片,则将Frq插入到该碎片中,导致碎片的分裂和碎片索引项的更改,具体有以下三种情况:
(a)如果有碎片的长度大于Frq的长度,那么选中超过Frq长度的所有碎片中长度最小的碎片(记作Ffr),将Ffr分裂成两部分,前部分分配给Frq,后部分仍作为碎片,在小文件索引集合插入Frq的索引项,其中:
Frq.Offset=Ffr.Offset
Frq.Length=Size of(Frq)
其中,Size of(Frq)代表Frq的长度,
在碎片索引集合中,修改Ffr的索引项,其中:
Ffr.Offset=Ffr.Offset+Size of(Frq)
Ffr.Length=Ffr.Length-Size of(Frq)
(b)如果所有碎片的长度都小于Frq的长度,则将数据块的新空间分配给Frq,碎片索引集合无改变;
(c)如果有碎片的长度等于Frq的长度,那么就选中该碎片(记作Ffre),将Ffre全部分配给Frq,小文件索引集合插入Frq的索引项,其中:
Frq.Offset=Ffre.Offset
Frq.Length=Size of(Frq)。
与现有技术相比,本发明方法的优点是,本发明在考虑文件关联关系的基础上,提出文件归并方法,将属于某一类别的小文件聚合。针对属于某一类别的独立的小文件进行文件聚合和全局索引管理,大幅度提高了内存利用率,提高单位内存支持的最大文件数量。本发明适用于通用场景下可归类小文件的存储和管理。
附图说明
图1是本发明可归类小文件关联存储方法的聚合技术示意图。
图2是本发明消息格式图。
图3是本发明小文件上传活动交互图。
图4是本发明小文件下载活动图。
具体实施方式
一种基于Hadoop的海量可归类小文件关联存储方法,包括用于管理聚合后的小文件的NameNode端全局索引管理技术和用于提高可归类小文件存储效率的文件聚合技术。我们可以将属于某一类别的小文件称为可归类小文件,属于某一类别的小文件聚合成一个文件后,称之为逻辑单元;对每一个小文件建立存放在Hadoop文件系统的NameNode内存中的全局索引。
NameNode端全局索引管理技术包括:全局索引文件加载在NameNode的内存中,扩展了NameNode的元数据结构,包括小文件索引集合和碎片索引集合;
(1)小文件索引集合采用二叉排序树结构,用来定位小文件,索引项包括文件名称(16字节)、偏移(4字节)、长度(4字节)、局部序列号(4字节),索引项按文件名排序,使用局部序列号记录文件聚合到逻辑单元的先后顺序,对小文件索引集合的操作主要有索引项的查找、插入和删除,这些操作与二叉排序树操作的相同;
(2)碎片索引集合采用二叉排序树结构,用来定位碎片。索引项包括偏移(4字节)和长度(4字节),索引项按碎片长度排序,对碎片索引集合的操作主要有索引项的查找、插入和删除,这些操作与二叉排序树的操作相同;
(a)当写入小文件时,对小文件索引集合和碎片索引集合的操作如下:
Step 1:对小文件索引集合,使用待写入小文件的文件名查找索引项,判断是否有重名文件存在,如果有重名文件,则返回写入失败,如果没有重名文件,则执行Step 2;
Step 2:对碎片索引集合,使用待写入小文件的长度查找索引项,判断是否有合适的碎片供存放写入文件;
Step 2.1:如果有,则将该碎片分为两个部分,前一部分分配给待写入小文件,后一部分碎片作为新的碎片,在碎片索引集合,删除原碎片的索引项,为新的碎片插入索引项,在小文件索引集合中插入新写入小文件的索引项;
Step 2.2:如果没有,对碎片索引集合不进行任何改动,直接在数据块末尾的空白区分配空间给小文件存储,并在小文件索引集合插入其索引项。
(b)当删除小文件时,对小文件索引集合和碎片索引集合的操作如下:
Step1:对小文件索引集合,使用待删除小文件的文件名查找索引项,判断是否存在该文件,若不存在则删除失败,如果存在,则执行Step 2;
Step2:在小文件索引集合中,删除该文件的索引项,在碎片索引集合,插入一条新的碎片索引项;
Step3:在碎片索引集合,判断新的碎片索引项其相邻的数据单元是否同样是碎片数据,如果存在任何一边的数据单元是空白索引,那么合并多个数据碎片成一个大的数据碎片,并更新碎片索引,当数据碎片的相邻碎片是由于数据块的分界造成时,不需要进行数据碎片的合并。
所说的文件聚合技术包括:
对可归类小文件采用动态聚合策略,将小文件聚合到其属于的逻辑单元,根据写请求中的逻辑单元名,NameNode判断该文件属于哪个逻辑单元,如果属于某逻辑单元,则将其聚合到该逻辑单元,如果无法判断文件属于哪个逻辑单元,则将其聚合到待定单元中,根据文件库的规模,设定Ntc个待定单元,用Nuf表示未找到逻辑单元的小文件的总数,Naf表示已经聚合到逻辑单元的总数,Nl表示逻辑单元的总数,则
N tc = N uf N af * N l * μ
其中μ<1,是待定因子。小文件具体聚合到哪个待定单元,可采取不同的策略,如采取轮询方式或通过Hash值分配方式,之后再根据文件的访问局部性,将待定单元中的文件归类到逻辑单元中;
聚合文件时采用碎片再分配策略,当小文件(记作Frq)聚合到逻辑单元时,检查碎片并将Frq填充到碎片,NameNode首先读取逻辑单元的碎片索引集合,查询是否有合适的碎片供Frq填充,如果有合适的碎片,则将Frq插入到该碎片中,导致碎片的分裂和碎片索引项的更改,具体有以下三种情况:
(a)如果有碎片的长度大于Frq的长度,那么选中超过Frq长度的所有碎片中长度最小的碎片(记作Ffr),将Ffr分裂成两部分,前部分分配给Frq,后部分仍作为碎片,在小文件索引集合插入Frq的索引项,其中:
Frq.Offset=Ffr.Offset
Frq.Length=Size of(Frq)
其中,Size of(Frq)代表Frq的长度,
在碎片索引集合中,修改Ffr的索引项,其中:
Ffr.Offset=Ffr.Offset+Size of(Frq)
Ffr.Length=Ffr.Length-Size of(Frq)
(b)如果所有碎片的长度都小于Frq的长度,则将数据块的新空间分配给Frq,碎片索引集合无改变;
(c)如果有碎片的长度等于Frq的长度,那么就选中该碎片(记作Ffre),将Ffre全部分配给Frq,小文件索引集合插入Frq的索引项,其中:
Frq.Offset=Ffre.Offset
Frq.Length=Size of(Frq)。
以下结合附图,对本发明中的一些具体内容作细致描述。
如图1所示,本发明可归类小文件存储方案由上传模块、索引管理模块和下载模块组成。
A.上传模块
文件上传过程包括与NameNode交互和完成文件写入。
在上传文件Fupload时,如果指定了逻辑单元,则向NameNode发送格式一的请求消息。如果没有指定逻辑单元,则向NameNode发送格式二的请求消息,如图2所示,格式二消息仅包括小文件名和小文件的大小。在NameNode上,索引管理模块指定一个待定单元,返回待定单元的元数据和索引信息。
客户端与NameNode交互活动流程如图3所示,具体过程如下:
1)如果指定逻辑单元名,则向NameNode发送格式一消息,否则发送格式二的请求消息。
2)NameNode查询逻辑单元的元数据和索引信息。如果查询不到逻辑单元的元数据,那么Fupload即该逻辑单元的第一个文件。NameNode为该逻辑单元分配一个数据块并建立元数据,然后为Fupload建立索引:起始位置是0,长度是Fupload的长度,将元数据和索引信息返回给客户端。执行步骤6)。
3)如果查询到逻辑单元的元数据,则查询其的索引信息。根据索引信息,判断是否已有空白文件。如果已有空白文件,则检查是否有空白文件的长度大于或者等于上传文件。如果有空白文件(记作Fblank),建立Fblank的索引信息:起始位置为Fblank的起始位置,长度为Fupload的大小;修改Fblank的索引:起始位置为Fblank的原起始位置加Fupload的大小,长度为Fblank原大小减去Fupload的大小。NameNode将元数据和Fupload的索引信息返回给客户端(写入到数据块,按照上述索引信息,将Fupload添加入Fblank)。执行步骤6)。
4)如果没有空白文件,或者没有空白文件的长度大于或者等于新文件,则查找该逻辑单元下所有小文件中起始位置最大的文件,记作Flast。计算Flast的结束位置与Fupload的大小之和,检查该和是否超过Hadoop文件系统的块长。如果不超过块长,则为Fupload建立索引:起始位置是Flast的结束位置,长度是Fupload的大小。将元数据和Fupload的索引信息返回给客户端。执行步骤6)。
5)如果Flast的结束位置与Fupload的大小之和超过块长,则在这个块的末尾,建立空白文件。空白文件的索引信息为:起始位置为Flast的结束位置,长度是块长减去起始位置;然后,NameNode为该逻辑单元分配一个新的数据块,并加入到元数据中。为Fupload建立索引信息:起始位置是新数据块的起始位置,长度是Fupload的大小。最后将元数据和Fupload的索引返回给客户端。
6)向客户端发送应答消息。客户端接收应答,并准备写入数据到DataNode。
7)完成文件写入DataNode。
B.索引管理模块
启动NameNode以后,索引管理机制被激活,处于监听状态的索引管理机制,对小文件进行查找、插入和删除操作。
NameNode端的索引管理模块主要完成文件索引和碎片索引集合的管理。向客户端提供索引分配、索引删除和索引查询服务。
1)当小文件请求聚合到逻辑单元时,索引管理模块提供索引分配服务。
Step 1:对碎片索引集合,使用待写入小文件的长度查找索引项;
Step 2:如果存在碎片长度大于待写入的小文件长度,则取长度大于该小文件的所有碎片中最短的碎片,将该碎片分为两个部分,前一部分索引分配给待写入小文件,后一部分碎片作为新的碎片,在碎片索引集合,删除原碎片的索引项,为新的碎片插入索引项,在小文件索引集合中插入新写入小文件的索引项;
Step 3:如果没有,对碎片索引集合不进行任何改动,直接在数据块末尾的空白区分配空间给小文件存储,并在小文件索引集合插入其索引项.
2)当小文件请求删除时,索引管理模块在文件索引中删除文件索引项,并在碎片索引集合总插入碎片索引项。返回操作成功与否。
Step1:对小文件索引集合,使用待删除小文件的文件名查找索引项,判断是否存在该文件,若不存在则删除失败,如果存在,则执行Step 2;
Step2:在小文件索引集合中,删除该文件的索引项,在碎片索引集合,插入一条新的碎片索引项;
Step3:在碎片索引集合,判断新的碎片索引项其相邻的数据单元是否同样是碎片数据,如果存在任何一边的数据单元是空白索引,那么合并多个数据碎片成一个大的数据碎片,并更新碎片索引,当数据碎片的相邻碎片是由于数据块的分界造成时,不需要进行数据碎片的合并。
3)当小文件读取时,索引管理模块根据小文件名在文件索引集合中查找文件索引项,并返回文件索引项。当小文件预取时,根据逻辑单元名,返回对应的文件索引集合给客户端。
C.下载模块
可归类小文件存储方案的下载包括逻辑单元的元数据获取、文件索引查询、实体文件的读取。下载活动流程如图4所示,具体过程如下:
1)经过映射后,下载模块接收到可归类小文件的读取请求,记作Frequest
2)客户端向NameNode发送请求,NameNode根据逻辑单元名,查询逻辑单元的元数据和文件索引集合;然后根据小文件名,在该逻辑单元的文件索引集合中,查询该文件的索引信息;将元数据和索引信息返回给客户端。
3)根据元数据和索引信息,客户端与相关的DataNode交互,待DataNode准备就绪后,取得相应的数据,返回给客户端。

Claims (2)

1.一种基于Hadoop的海量可归类小文件关联存储方法,其特征在于,包括NameNode端全局索引管理方案和文件聚合方案:该方法第一是将属于某一类别的小文件称为可归类小文件,当这些可归类小文件聚合成一个文件后,称之为逻辑单元;第二是对每一个小文件建立存放在Hadoop文件系统的NameNode内存中的全局索引;
所述的NameNode端全局索引管理方案包括小文件索引集合和碎片索引集合;其中:
(1)小文件索引集合采用二叉排序树结构,用来定位小文件,索引项包括文件名称、偏移、长度、局部序列号,索引项按文件名排序,使用局部序列号记录文件聚合到逻辑单元的先后顺序,对小文件索引集合的操作为索引项的查找、插入和删除,这些操作与二叉排序树操作的相同;
(2)碎片索引集合采用二叉排序树结构,用来定位碎片,索引项包括偏移和长度,索引项按碎片长度排序,对碎片索引集合的操作为索引项的查找、插入和删除,这些操作与二叉排序树的操作相同;
所述文件聚合方案是对可归类小文件采用动态聚合策略,将小文件聚合到其属于的逻辑单元,根据写请求中的逻辑单元名,NameNode判断该文件属于哪个逻辑单元,如果属于某逻辑单元,则将其聚合到该逻辑单元,如果无法判断文件属于哪个逻辑单元,则将其聚合到待定单元中,根据文件库的规模,设定Ntc个待定单元,用Nuf表示未找到逻辑单元的小文件的总数,Naf表示已经聚合到逻辑单元的总数,Nl表示逻辑单元的总数,则
N tc = N uf N af * N l * μ
其中μ<1,是待定因子;小文件具体聚合到哪个待定单元,采取轮询方式或通过Hash值分配方式,之后再根据文件的访问局部性,将待定单元中的文件归类到逻辑单元中;
聚合文件时采用碎片再分配策略,当记作Frq的小文件聚合到逻辑单元时,检查碎片并将Frq填充到碎片,NameNode首先读取逻辑单元的碎片索引集合,查询是否有合适的碎片供Frq填充,如果有合适的碎片,则将Frq插入到该碎片中,导致碎片的分裂和碎片索引项的更改,具体有以下三种情况:
(a)如果有碎片的长度大于Frq的长度,那么选中超过Frq长度的所有碎片中长度最小的碎片,记作Ffr,将Ffr分裂成两部分,前部分分配给Frq,后部分仍作为碎片,在小文件索引集合插入Frq的索引项,其中:
Frq.Offset=Ffr.Offset
Frq.Length=Size of(Frq)
其中,Size of(Frq)代表Frq的长度,
在碎片索引集合中,修改Ffr的索引项,其中:
Ffr.Offset=Ffr.Offset+Size of(Frq)
Ffr.Length=Ffr.Length-Size of(Frq)
(b)如果所有碎片的长度都小于Frq的长度,则将数据块的新空间分配给Frq,碎片索引集合无改变;
(c)如果有碎片的长度等于Frq的长度,那么就选中该碎片,记作Ffre,将Ffre全部分配给Frq,小文件索引集合插入Frq的索引项,其中:
Frq.Offset=Ffre.Offset
Frq.Length=Size of(Frq)。
2.如权利要求1所述的基于Hadoop的海量可归类小文件关联存储方法,其特征在于,所述NameNode端的索引管理中:
(a)当小文件请求聚合到逻辑单元时,对小文件索引集合和碎片索引集合的操作如下:
Step 1:对小文件索引集合,使用待写入小文件的文件名查找索引项,判断是否有重名文件存在,如果有重名文件,则返回写入失败,如果没有重名文件,则执行Step 2;
Step 2:对碎片索引集合,使用待写入小文件的长度查找索引项,判断是否有合适的碎片供存放写入文件;
Step 2.1:如果有,则将该碎片分为两个部分,前一部分分配给待写入小文件,后一部分碎片作为新的碎片,在碎片索引集合,删除原碎片的索引项,为新的碎片插入索引项,在小文件索引集合中插入新写入小文件的索引项;
Step 2.2:如果没有,对碎片索引集合不进行任何改动,直接在数据块末尾的空白区分配空间给小文件存储,并在小文件索引集合插入其索引项;
(b)当删除小文件时,对小文件索引集合和碎片索引集合的操作如下:
Step1:对小文件索引集合,使用待删除小文件的文件名查找索引项,判断是否存在该文件,若不存在则删除失败,如果存在,则执行Step 2;
Step2:在小文件索引集合中,删除该文件的索引项,在碎片索引集合,插入一条新的碎片索引项;
Step3:在碎片索引集合,判断新的碎片索引项其相邻的数据单元是否同样是碎片数据,如果存在任何一边的数据单元是空白索引,那么合并多个数据碎片成一个大的数据碎片,并更新碎片索引,当数据碎片的相邻碎片是由于数据块的分界造成时,不需要进行数据碎片的合并。
CN 201110312694 2011-10-15 2011-10-15 一种基于Hadoop 的海量可归类小文件关联存储方法 Expired - Fee Related CN102332029B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110312694 CN102332029B (zh) 2011-10-15 2011-10-15 一种基于Hadoop 的海量可归类小文件关联存储方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110312694 CN102332029B (zh) 2011-10-15 2011-10-15 一种基于Hadoop 的海量可归类小文件关联存储方法

Publications (2)

Publication Number Publication Date
CN102332029A true CN102332029A (zh) 2012-01-25
CN102332029B CN102332029B (zh) 2013-04-17

Family

ID=45483805

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110312694 Expired - Fee Related CN102332029B (zh) 2011-10-15 2011-10-15 一种基于Hadoop 的海量可归类小文件关联存储方法

Country Status (1)

Country Link
CN (1) CN102332029B (zh)

Cited By (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102646121A (zh) * 2012-02-23 2012-08-22 武汉大学 结合RDBMS和Hadoop云存储的两级存储方法
CN102663117A (zh) * 2012-04-18 2012-09-12 中国人民大学 面向数据库与Hadoop混合平台的OLAP查询处理方法
CN102662992A (zh) * 2012-03-14 2012-09-12 北京搜狐新媒体信息技术有限公司 一种海量小文件的存储、访问方法及装置
CN102799679A (zh) * 2012-07-24 2012-11-28 河海大学 基于Hadoop的海量空间数据索引更新系统及方法
CN103092927A (zh) * 2012-12-29 2013-05-08 华中科技大学 一种分布式环境下的文件快速读写方法
CN103248656A (zh) * 2012-02-10 2013-08-14 联想(北京)有限公司 一种实现数据读写的方法以及分布式文件系统、客户端
CN103488685A (zh) * 2013-09-02 2014-01-01 上海网达软件股份有限公司 一种基于分布式存储系统的碎片文件存储方法
CN103580989A (zh) * 2012-07-31 2014-02-12 腾讯科技(深圳)有限公司 垃圾邮件处理方法及系统
CN103605726A (zh) * 2013-11-15 2014-02-26 中安消技术有限公司 一种小文件的存取方法、系统及控制节点和存储节点
CN103678293A (zh) * 2012-08-29 2014-03-26 百度在线网络技术(北京)有限公司 一种数据存储方法及装置
CN103778148A (zh) * 2012-10-23 2014-05-07 阿里巴巴集团控股有限公司 Hadoop分布式文件系统数据文件的生命周期管理方法和设备
CN103841135A (zh) * 2012-11-22 2014-06-04 腾讯科技(深圳)有限公司 文件加速下载方法及装置
CN103856567A (zh) * 2014-03-26 2014-06-11 西安电子科技大学 基于Hadoop分布式文件系统的小文件存储方法
CN103902623A (zh) * 2012-12-26 2014-07-02 财团法人工业技术研究院 用于在存储系统上存取文件的方法和系统
CN104199781A (zh) * 2014-08-14 2014-12-10 深圳百科信息技术有限公司 一种基于共享内存的内存碎片分配方法和装置
CN104536908A (zh) * 2014-11-05 2015-04-22 北京中安比特科技有限公司 一种面向单机的海量小记录高效存储管理方法
CN104572670A (zh) * 2013-10-15 2015-04-29 方正国际软件(北京)有限公司 一种小文件的存储、查询及删除方法和系统
WO2015161550A1 (zh) * 2014-04-24 2015-10-29 中兴通讯股份有限公司 管理索引的方法、装置及计算机存储介质
CN105095439A (zh) * 2015-07-23 2015-11-25 浙江立元通信技术股份有限公司 一种图片专属安全存储云系统
CN105141666A (zh) * 2015-07-29 2015-12-09 江苏天联信息科技发展有限公司 信息数据存储方法及装置
CN105224438A (zh) * 2014-06-11 2016-01-06 中兴通讯股份有限公司 基于网盘的用户消费提醒方法及装置
CN105608162A (zh) * 2015-12-17 2016-05-25 网易(杭州)网络有限公司 文件处理方法和装置
CN105630689A (zh) * 2014-10-30 2016-06-01 曙光信息产业股份有限公司 一种分布式存储系统中加速数据重建的方法
CN105630779A (zh) * 2014-10-27 2016-06-01 杭州海康威视系统技术有限公司 一种基于分布式文件系统的小文件存储方法和装置
CN105912675A (zh) * 2016-04-13 2016-08-31 中国科学院计算技术研究所 一种针对小文件合并的批量删除/查询方法与装置
CN106446079A (zh) * 2016-09-08 2017-02-22 中国科学院计算技术研究所 一种面向分布式文件系统的文件预取/缓存方法及装置
WO2017133216A1 (zh) * 2016-02-06 2017-08-10 华为技术有限公司 分布式存储方法和设备
CN107045531A (zh) * 2017-01-20 2017-08-15 郑州云海信息技术有限公司 一种优化hdfs小文件存取的系统及方法
CN107194001A (zh) * 2017-06-14 2017-09-22 网宿科技股份有限公司 一种列式存储格式文件快速合并方法及其系统
CN107506466A (zh) * 2017-08-30 2017-12-22 郑州云海信息技术有限公司 一种小文件存储方法及系统
CN107832464A (zh) * 2017-11-28 2018-03-23 中国银行股份有限公司 一种数据漂白方法及装置
CN108664664A (zh) * 2018-05-22 2018-10-16 电子科技大学 一种海量教育文件关联存储方法
CN108932287A (zh) * 2018-05-22 2018-12-04 广东技术师范学院 一种基于Hadoop的海量小文件写入方法
CN109240999A (zh) * 2018-08-24 2019-01-18 浪潮电子信息产业股份有限公司 一种基于小文件的自动化聚合打包方法及系统
CN109388613A (zh) * 2018-09-30 2019-02-26 联想(北京)有限公司 一种文件管理方法和电子设备
CN109391787A (zh) * 2018-09-30 2019-02-26 武汉中科通达高新技术股份有限公司 文件格式、图像聚合及读取方法
CN110099082A (zh) * 2018-01-30 2019-08-06 浙江宇视科技有限公司 减少Hbase热点的方法、装置及可读存储介质
CN110515920A (zh) * 2019-08-30 2019-11-29 北京浪潮数据技术有限公司 一种基于Hadoop的海量小文件存取方法和系统
CN110990370A (zh) * 2019-12-13 2020-04-10 南京富士通南大软件技术有限公司 一种基于GlusterFS分布式文件系统的分布式对象存储系统
CN113590566A (zh) * 2021-06-23 2021-11-02 河海大学 基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
BO DONG ET AL.: "A Novel Approach to Improving the Efficiency of Storing and Accessing Small Files on Hadoop:a Case Study by PowerPoint Files", 《IEEE INTERNATIONAL CONFERENCE ON SERVICES COMPUTING》 *
GRANT MACKEY ET AL.: "Improving Metadata Management for Small Files in HDFS", 《IEEE INTERNATIONAL CONFERENCE ON CLUSTER"09》 *
余思 等: "一种提高云存储中小文件存储效率的方案", 《西安交通大学学报》 *
江柳: "HDFS下小文件存储优化相关技术研究", 《中国硕士学位论文全文数据库》 *

Cited By (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103248656B (zh) * 2012-02-10 2017-04-19 联想(北京)有限公司 一种实现数据读写的方法以及分布式文件系统、客户端
CN103248656A (zh) * 2012-02-10 2013-08-14 联想(北京)有限公司 一种实现数据读写的方法以及分布式文件系统、客户端
CN102646121A (zh) * 2012-02-23 2012-08-22 武汉大学 结合RDBMS和Hadoop云存储的两级存储方法
CN102662992B (zh) * 2012-03-14 2014-10-08 北京搜狐新媒体信息技术有限公司 一种海量小文件的存储、访问方法及装置
CN102662992A (zh) * 2012-03-14 2012-09-12 北京搜狐新媒体信息技术有限公司 一种海量小文件的存储、访问方法及装置
CN102663117A (zh) * 2012-04-18 2012-09-12 中国人民大学 面向数据库与Hadoop混合平台的OLAP查询处理方法
CN102799679A (zh) * 2012-07-24 2012-11-28 河海大学 基于Hadoop的海量空间数据索引更新系统及方法
CN102799679B (zh) * 2012-07-24 2014-10-22 河海大学 基于Hadoop的海量空间数据索引更新系统及方法
CN103580989A (zh) * 2012-07-31 2014-02-12 腾讯科技(深圳)有限公司 垃圾邮件处理方法及系统
CN103580989B (zh) * 2012-07-31 2018-07-24 腾讯科技(深圳)有限公司 垃圾邮件处理方法及系统
CN103678293A (zh) * 2012-08-29 2014-03-26 百度在线网络技术(北京)有限公司 一种数据存储方法及装置
CN103778148A (zh) * 2012-10-23 2014-05-07 阿里巴巴集团控股有限公司 Hadoop分布式文件系统数据文件的生命周期管理方法和设备
CN103778148B (zh) * 2012-10-23 2017-04-12 阿里巴巴集团控股有限公司 Hadoop分布式文件系统数据文件的生命周期管理方法和设备
CN103841135A (zh) * 2012-11-22 2014-06-04 腾讯科技(深圳)有限公司 文件加速下载方法及装置
CN103841135B (zh) * 2012-11-22 2018-06-22 腾讯科技(深圳)有限公司 文件加速下载方法及装置
CN103902623B (zh) * 2012-12-26 2017-10-13 财团法人工业技术研究院 用于在存储系统上存取文件的方法和系统
CN103902623A (zh) * 2012-12-26 2014-07-02 财团法人工业技术研究院 用于在存储系统上存取文件的方法和系统
CN103092927B (zh) * 2012-12-29 2016-01-20 华中科技大学 一种分布式环境下的文件快速读写方法
CN103092927A (zh) * 2012-12-29 2013-05-08 华中科技大学 一种分布式环境下的文件快速读写方法
CN103488685B (zh) * 2013-09-02 2017-02-01 上海网达软件股份有限公司 一种基于分布式存储系统的碎片文件存储方法
CN103488685A (zh) * 2013-09-02 2014-01-01 上海网达软件股份有限公司 一种基于分布式存储系统的碎片文件存储方法
CN104572670A (zh) * 2013-10-15 2015-04-29 方正国际软件(北京)有限公司 一种小文件的存储、查询及删除方法和系统
CN104572670B (zh) * 2013-10-15 2019-07-23 方正国际软件(北京)有限公司 一种小文件的存储、查询及删除方法和系统
CN103605726B (zh) * 2013-11-15 2017-11-14 中安消技术有限公司 一种小文件的存取方法、系统及控制节点和存储节点
CN103605726A (zh) * 2013-11-15 2014-02-26 中安消技术有限公司 一种小文件的存取方法、系统及控制节点和存储节点
CN103856567B (zh) * 2014-03-26 2017-05-17 西安电子科技大学 基于Hadoop分布式文件系统的小文件存储方法
CN103856567A (zh) * 2014-03-26 2014-06-11 西安电子科技大学 基于Hadoop分布式文件系统的小文件存储方法
WO2015161550A1 (zh) * 2014-04-24 2015-10-29 中兴通讯股份有限公司 管理索引的方法、装置及计算机存储介质
CN105224438A (zh) * 2014-06-11 2016-01-06 中兴通讯股份有限公司 基于网盘的用户消费提醒方法及装置
CN104199781A (zh) * 2014-08-14 2014-12-10 深圳百科信息技术有限公司 一种基于共享内存的内存碎片分配方法和装置
CN105630779A (zh) * 2014-10-27 2016-06-01 杭州海康威视系统技术有限公司 一种基于分布式文件系统的小文件存储方法和装置
CN105630689B (zh) * 2014-10-30 2018-11-27 曙光信息产业股份有限公司 一种分布式存储系统中加速数据重建的方法
CN105630689A (zh) * 2014-10-30 2016-06-01 曙光信息产业股份有限公司 一种分布式存储系统中加速数据重建的方法
CN104536908B (zh) * 2014-11-05 2017-12-29 中安威士(北京)科技有限公司 一种面向单机的海量小记录高效存储管理方法
CN104536908A (zh) * 2014-11-05 2015-04-22 北京中安比特科技有限公司 一种面向单机的海量小记录高效存储管理方法
CN105095439A (zh) * 2015-07-23 2015-11-25 浙江立元通信技术股份有限公司 一种图片专属安全存储云系统
CN105141666B (zh) * 2015-07-29 2018-12-14 江苏天联信息科技发展有限公司 信息数据存储方法及装置
CN105141666A (zh) * 2015-07-29 2015-12-09 江苏天联信息科技发展有限公司 信息数据存储方法及装置
CN105608162B (zh) * 2015-12-17 2019-03-19 网易(杭州)网络有限公司 文件处理方法和装置
CN105608162A (zh) * 2015-12-17 2016-05-25 网易(杭州)网络有限公司 文件处理方法和装置
CN107045422A (zh) * 2016-02-06 2017-08-15 华为技术有限公司 分布式存储方法和设备
US11301154B2 (en) 2016-02-06 2022-04-12 Huawei Technologies Co., Ltd. Distributed storage method and device
US11809726B2 (en) 2016-02-06 2023-11-07 Huawei Technologies Co., Ltd. Distributed storage method and device
WO2017133216A1 (zh) * 2016-02-06 2017-08-10 华为技术有限公司 分布式存储方法和设备
CN105912675A (zh) * 2016-04-13 2016-08-31 中国科学院计算技术研究所 一种针对小文件合并的批量删除/查询方法与装置
CN105912675B (zh) * 2016-04-13 2019-06-18 中国科学院计算技术研究所 一种针对小文件合并的批量删除/查询方法与装置
CN106446079B (zh) * 2016-09-08 2019-06-18 中国科学院计算技术研究所 一种面向分布式文件系统的文件预取/缓存方法及装置
CN106446079A (zh) * 2016-09-08 2017-02-22 中国科学院计算技术研究所 一种面向分布式文件系统的文件预取/缓存方法及装置
CN107045531A (zh) * 2017-01-20 2017-08-15 郑州云海信息技术有限公司 一种优化hdfs小文件存取的系统及方法
CN107194001B (zh) * 2017-06-14 2019-11-12 网宿科技股份有限公司 一种列式存储格式文件快速合并方法及其系统
CN107194001A (zh) * 2017-06-14 2017-09-22 网宿科技股份有限公司 一种列式存储格式文件快速合并方法及其系统
CN107506466B (zh) * 2017-08-30 2020-08-04 郑州云海信息技术有限公司 一种小文件存储方法及系统
CN107506466A (zh) * 2017-08-30 2017-12-22 郑州云海信息技术有限公司 一种小文件存储方法及系统
CN107832464A (zh) * 2017-11-28 2018-03-23 中国银行股份有限公司 一种数据漂白方法及装置
CN107832464B (zh) * 2017-11-28 2021-11-23 中国银行股份有限公司 一种数据漂白方法及装置
CN110099082A (zh) * 2018-01-30 2019-08-06 浙江宇视科技有限公司 减少Hbase热点的方法、装置及可读存储介质
CN110099082B (zh) * 2018-01-30 2022-03-11 浙江宇视科技有限公司 减少Hbase热点的方法、装置及可读存储介质
CN108664664A (zh) * 2018-05-22 2018-10-16 电子科技大学 一种海量教育文件关联存储方法
CN108932287A (zh) * 2018-05-22 2018-12-04 广东技术师范学院 一种基于Hadoop的海量小文件写入方法
CN109240999A (zh) * 2018-08-24 2019-01-18 浪潮电子信息产业股份有限公司 一种基于小文件的自动化聚合打包方法及系统
CN109391787A (zh) * 2018-09-30 2019-02-26 武汉中科通达高新技术股份有限公司 文件格式、图像聚合及读取方法
CN109388613A (zh) * 2018-09-30 2019-02-26 联想(北京)有限公司 一种文件管理方法和电子设备
CN110515920A (zh) * 2019-08-30 2019-11-29 北京浪潮数据技术有限公司 一种基于Hadoop的海量小文件存取方法和系统
CN110990370A (zh) * 2019-12-13 2020-04-10 南京富士通南大软件技术有限公司 一种基于GlusterFS分布式文件系统的分布式对象存储系统
CN110990370B (zh) * 2019-12-13 2023-06-23 南京富士通南大软件技术有限公司 一种基于GlusterFS分布式文件系统的分布式对象存储系统
CN113590566A (zh) * 2021-06-23 2021-11-02 河海大学 基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质
CN113590566B (zh) * 2021-06-23 2023-10-27 河海大学 基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN102332029B (zh) 2013-04-17

Similar Documents

Publication Publication Date Title
CN102332029B (zh) 一种基于Hadoop 的海量可归类小文件关联存储方法
CN106484877B (zh) 一种基于hdfs的文件检索系统
CN101556557B (zh) 一种基于对象存储设备的对象文件组织方法
CN102298641B (zh) 一种基于键值库的文件与结构化数据统一存储方法
CN104462389B (zh) 基于分级存储的分布式文件系统实现方法
CN110347651A (zh) 基于云存储的数据同步方法、装置、设备及存储介质
CN103631940A (zh) 一种应用于hbase数据库的数据写入方法及系统
CN102169507A (zh) 一种分布式实时搜索引擎
CN104317742A (zh) 一种优化空间管理的自动精简配置方法
CN102446139B (zh) 一种数据存储方法及装置
CN103176754A (zh) 一种海量小文件读取存储方法
CN103678491A (zh) 一种基于Hadoop中小文件优化和倒排索引的方法
CN105868286A (zh) 基于分布式文件系统小文件合并的并行追加方法及系统
CN103020255A (zh) 分级存储方法和装置
CN102930060A (zh) 一种数据库快速索引的方法及装置
CN103559229A (zh) 基于MapFile的小文件管理服务SFMS系统及其使用方法
CN102521419A (zh) 分级存储的实现方法和系统
CN106570113B (zh) 一种海量矢量切片数据云存储方法及系统
CN103514210A (zh) 小文件处理方法及装置
CN103885887A (zh) 用户数据存储方法、读取方法及系统
CN104123237A (zh) 海量小文件分级存储方法及系统
CN103049574B (zh) 实现文件动态副本的键值文件系统及方法
CN103905517A (zh) 一种数据存储方法及设备
CN107832423A (zh) 一种用于分布式文件系统的文件读写方法
CN104391961A (zh) 千万级小文件数据的一种读写解决策略

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130417

Termination date: 20151015

EXPY Termination of patent right or utility model