CN102332027A - 一种基于Hadoop的海量非独立小文件关联存储方法 - Google Patents
一种基于Hadoop的海量非独立小文件关联存储方法 Download PDFInfo
- Publication number
- CN102332027A CN102332027A CN201110312671A CN201110312671A CN102332027A CN 102332027 A CN102332027 A CN 102332027A CN 201110312671 A CN201110312671 A CN 201110312671A CN 201110312671 A CN201110312671 A CN 201110312671A CN 102332027 A CN102332027 A CN 102332027A
- Authority
- CN
- China
- Prior art keywords
- file
- small documents
- index
- partial indexes
- merged
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于Hadoop的海量非独立小文件关联存储方法,主要解决海量的非独立小文件存取效率和读取效率较低的问题。针对某个大文件被分割成的许多小文件,即非独立小文件,本发明的特征在于:(1)将属于某个大文件的所有小文件归并为一个文件,称为merged file;(2)对每个merged file建立一个局部索引,并在上传时将局部索引文件与文件实体一同存放在Hadoop系统的DataNode上;(3)在读取非独立小文件时,采用元数据缓存、局部索引文件预取和关联文件预取提高文件的读取效率。通过以上方法,提高了现有Hadoop系统存储小文件的存储效率和读取效率。本发明适用于通用场景下海量的非独立小文件的存储和管理。
Description
技术领域
本发明涉及海量非独立小文件在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的海量非独立小文件关联存储方法,包括DataNode(Hadoop分布式文件系统的数据存储节点,用来存储数据)端局部索引管理、文件归并和元数据缓存、局部索引文件预取和关联文件预取,所述非独立小文件是指某些大文件被分割成许多小的文件进行存储和读取,这些小文件是该大文件的一部分;具体步骤如下:
(1)将属于某个大文件的所有小文件归并为一个文件,称之为mergedfile,该文件归并步骤用于提高非独立小文件存储效率;(2)对每个mergedfile建立一个局部索引,并在上传时将局部索引文件与文件实体一同存放在Hadoop文件系统的DataNode上,该DataNode端局部索引管理步骤用于归并后小文件的管理;(3)在读取非独立小文件时,采用元数据缓存、局部索引文件预取和关联文件预取,该步骤用于提高非独立小文件的读取效率。
上述方法中,所述DataNode端局部索引管理包括:
为每一个merged file建立一个局部索引文件,记录属于该merged file的所有小文件的起始位置和长度,局部索引文件位于该merged file的每一个块的起始位置,并且只为该merged file服务;
(1)局部索引文件结构
局部索引文件采用静态查找表结构,由索引头部、序列索引和文件索引三部分构成;其中索引头部由占1字节的版本号、占4字节的索引项数和占4字节的局部索引文件长度组成;序列索引由占4字节的序列名称、占4字节的文件索引的起始编号和占4字节的文件索引项数构成;文件索引项由占16字节的文件名称、占4字节的文件长度和占4字节的文件偏移构成;
(2)读文件时对局部索引文件的操作
首先,根据merged file名从NameNode获取元数据;然后,由merged file的元数据,从Hadoop文件系统的相应DataNode读取指定的数据块,并根据数据块内索引文件长度项读取数据块的局部索引文件;最后根据小文件名称,查找局部索引文件,获得该小文件的起始位置和长度,从而完成对小文件的读操作;
当该merged file的小文件数目少于1000时,采用顺序查找方法;当小文件的数目超过1000时,顺序查找会影响读取性能,在文件索引上建立序列索引,避免查询的开销过大;
如果是一级索引格式,则从局部索引文件中第一个目录项开始,与请求小文件名称逐条对比,若文件索引项的小文件名称符合,则查找成功,返回该小文件索引记录;否则,继续查找直至最后一个记录项,若没有记录项符合,则返回小文件名查找失败;
如果是两级索引格式,则查找分为两个阶段:首先根据待查小文件的序列名称,在序列索引表中查找序列,如果索引表内没有记录项,则表明该序列不存在;否则根据序列指定的位置,开始顺序查找文件索引位置。
所述的文件归并操作在Hadoop文件系统的客户端上进行,将属于同一个大文件的所有小文件合并成一个文件;具体步骤如下:
(1)计算非独立小文件总数,根据文件的数目决定采用文件索引还是采用序列索引+文件索引,由于索引每项长度固定,计算得出局部索引文件的长度,用Lindex表示,过程如下:
Step1,如果采用一级索引格式,用Lfindex表示单个索引项的长度,Number表示小文件总数,Lhead表示索引头部的长度,则
Lindex=Lfindex×Number+Lhead
Step2,如果采用两级索引结构,假设有N个序列,每一个序列的小文件数为Number1,Number2,…,NumberN,Lsindex表示序列索引长度,则
Lindex=N×Lsindex+(Number1+Number2+…+NumberN)×Lfindex+Lhead
(2)计算该merged file所有非独立小文件的长度和与局部索引文件长度的和Lmerge,将Lmerge与Hadoop文件系统的块大小作比较;
(3)如果Lmerge小于Hadoop文件系统的块大小,则该merged file只占用一个数据块;所有文件按默认顺序存放:首先是局部索引文件,然后是小文件序列,小文件序列按照小文件的逻辑顺序依次排列;按照小文件顺序计算每个小文件的偏移和长度,建立局部索引文件;最后进行第(4)步;
如果Lmerge超过Hadoop文件系统的块长,归并后文件会被分成多个数据块存储;当有小文件跨数据块时,采用边界填充算法写入一段空白文件将原来的数据块填充,然后在新申请的数据块中写入该文件;
所述的边界填充算法过程如下:
Step1:依次计算每个文件的偏移,在数据块的边界处,检查是否有文件会横跨两个数据块,如果没有,转向Step3,否则,转向Step2;
Step2:在这个横跨两个数据块的小文件前,建立额外的局部索引文件,此索引文件的偏移是下一个数据块的起始位置,横跨小文件的偏移是该局部索引文件的结束位置,设块长是Lblock,局部索引文件的大小是Lindex,新块的序列号是W,新索引文件偏移量是Loffset,新索引文件长度是Llength,横跨小文件的偏移量是Lfoffset,则
Loffset=(W-1)×Lblock
Llength=Lindex
Lfoffset=Loffset+Llength
Step3:对下一个数据块,重复步骤Step1和Step2;
在完成边界填充后,能够确定每一个小文件在merged file内的顺序和偏移,因此可以建立局部索引文件;
(4)根据局部索引文件中每个文件的偏移对小文件进行归并,用空白文件填充两个文件之间的空白区域。
所述的元数据缓存、局部索引文件预取和关联文件预取包括:
(1)元数据缓存:当小文件被读取时,将小文件映射到merged file以获取merged file的元数据;NameNode将元数据返回给客户端后,客户端根据元数据信息与相应的DataNodes交互;然后客户端将该merged file的元数据缓存,则如果该merged file的其它小文件被请求时,能够直接从缓存中读取元数据从而减少与NameNode的交互;
(2)局部索引文件预取:根据merged file的元数据,客户端获知从哪些数据块中读取被请求文件;如果局部索引文件已经被预取,当属于该mergedfile的小文件被请求时,客户端根据被缓存的索引信息,直接从对应DataNode中读取;否则,局部索引文件预取操作被触发,将局部索引文件预取到客户端的缓存中;在缓存中,预取得到的局部索引文件和元数据被处理,为每一个小文件生成元数据索引信息,索引信息包括:原始小文件文件名(16字节)、DataNode ID(4字节)、块ID(4字节)、偏移(4字节)和长度(4字节);
(3)关联文件预取:同一个merged file的非独立小文件有着直观的关联关系和明确的逻辑顺序,当被请求的小文件返回到客户端后,关联文件预取操作被触发,根据文件之间的逻辑顺序将该merged file下的相关小文件预取。
与现有技术相比,本发明方法的优点是,在考虑文件关联关系的基础上,通过非独立小文件的归并,并加入缓存和预取技术,同时提出了局部索引管理技术,为每一个归并后的文件建立一个局部索引文件,从而可降低元数据服务器的负载。其中,文件归并技术可提高非独立小文件的存储效率,DataNode端局部索引管理技术可解决归并后小文件的管理问题,元数据缓存、局部索引文件预取和关联文件预取技术用于提高非独立小文件的读取效率。
附图说明
图1是本发明非独立小文件关联存储方案图。
图2是本发明非独立小文件上传活动图。
图3是本发明非独立小文件下载活动图。
具体实施方式
以下结合附图及实施例对本发明作进一步的详细说明。
基于Hadoop的海量非独立小文件关联存储方法,首先将某些大文件分割成许多小的文件进行存储和读取,这些小文件是该大文件的一部分,称为非独立小文件,将属于某个大文件的所有非独立小文件归并为一个文件,称为merged file;然后对每个merged file建立一个局部索引,并在上传时将局部索引文件与文件实体一同存放在Hadoop文件系统的DataNode上;接着在读取非独立小文件时,采用元数据缓存、局部索引文件预取和关联文件预取提高文件的读取效率。
DataNode端局部索引管理技术是为每一个merged file建立一个局部索引文件,记录属于该merged file的所有小文件的起始位置和长度,局部索引文件位于该merged file的每一个块的起始位置,并且只为该merged file服务。
局部索引文件结构采用静态查找表结构,由索引头部、序列索引和文件索引三部分构成:(a)索引头部由版本号(1字节)、索引项数(4字节)和局部索引文件长度(4字节)组成;(b)序列索引由序列名称(4字节)、文件索引的起始编号(4字节)和文件索引项数(4字节)构成;(c)文件索引项由文件名称(16字节)、文件长度(4字节)和文件偏移(4字节)构成;
读文件时对局部索引文件的操作是:首先,根据merged file名从NameNode获取元数据;然后,由merged file的元数据,从Hadoop文件系统的相应DataNode读取指定的数据块,并根据数据块内索引文件长度项读取数据块的局部索引文件;最后根据小文件名称,查找局部索引文件,获得该小文件的起始位置和长度,从而完成对小文件的读操作。当该merged file的小文件数目少于1000时,采用顺序查找方法;当小文件的数目超过1000时,顺序查找会影响读取性能,在文件索引上建立序列索引。如果是一级索引格式,则从局部索引文件中第一个目录项开始,与请求小文件名称逐条对比,若文件索引项的小文件名称符合,则查找成功,返回该小文件索引记录;否则,继续查找直至最后一个记录项,若没有记录项符合,则返回小文件名查找失败。如果是两级索引格式,则查找分为两个阶段:首先根据待查小文件的序列名称,在序列索引表中查找序列,如果索引表内没有记录项,则表明该序列不存在;否则根据序列指定的位置,开始顺序查找文件索引位置。
文件归并技术是在Hadoop文件系统的客户端上进行,将属于同一个大文件的所有小文件合并成一个文件(以下有详述)。
元数据缓存、局部索引文件预取和关联文件预取包括:
(1)元数据缓存:当小文件被读取时,将小文件映射到merged file以获取merged file的元数据;NameNode将元数据返回给客户端后,客户端根据元数据信息与相应的DataNodes交互;然后客户端将该merged file的元数据缓存,则如果该merged file的其它小文件被请求时,能够直接从缓存中读取元数据从而减少与NameNode的交互;
(2)局部索引文件预取:根据merged file的元数据,客户端获知从哪些数据块中读取被请求文件;如果局部索引文件已经被预取,当属于该mergedfile的小文件被请求时,客户端根据被缓存的索引信息,直接从对应DataNode中读取;否则,局部索引文件预取操作被触发,将局部索引文件预取到客户端的缓存中;在缓存中,预取得到的局部索引文件和元数据被处理,为每一个小文件生成元数据索引信息,索引信息包括:原始小文件文件名(16字节)、DataNode ID(4字节)、块ID(4字节)、偏移(4字节)和长度(4字节);
(3)关联文件预取:同一个merged file的非独立小文件有着直观的关联关系和明确的逻辑顺序,当被请求的小文件返回到客户端后,关联文件预取操作被触发,根据文件之间的逻辑顺序将该merged file下的相关小文件预取。
如图1所示,非独立小文件存储方案主要由上传模块和下载模块组成。
A.上传模块
文件上传包括merged file建立和小文件上传。上传活动图如图2所示,描述了上传过程中客户端和Hadoop集群的交互。上传流程如下:
1.生成局部索引文件,归并小文件,并与局部索引文件合并。首先根据上传小文件的数量大小选择采用一级索引还是两级索引,然后根据小文件计算出局部索引文件长度,进而得到局部索引与所有小文件长度之和,如果存在小文件跨块,则在跨块小文件前使用边界填充算法填充空白文件,最后归并小文件并与局部索引文件合并。
(1)计算非独立小文件总数,根据文件的数目决定采用文件索引还是采用序列索引+文件索引,计算得出局部索引文件的长度,用Lindex表示,过程如下:
Step1,如果采用一级索引格式,用Lfindex表示单个索引项的长度,Number表示小文件总数,Lhead表示索引头部的长度,则
Lindex=Lfindex×Number+Lhead
Step2,如果采用两级索引结构,假设有N个序列,每一个序列的小文件数为Number1,Number2,…,NumberN,Lsindex表示序列索引长度,则
Lindex=N×Lsindex+(Number1+Number2+…+NumberN)×Lfindex+Lhead
(2)计算该merged file所有非独立小文件的长度和与局部索引文件长度的和Lmerge,将Lmerge与Hadoop文件系统的块大小作比较;
(3)如果Lmerge小于Hadoop文件系统的块大小,则merged file只占用一个数据块;所有文件按默认顺序存放:首先是局部索引文件,然后是小文件序列,小文件序列按照小文件的逻辑顺序依次排列;按照小文件顺序计算每个小文件的偏移和长度,建立局部索引文件;最后进行第(4)步;
如果Lmerge超过Hadoop文件系统的块长,归并后文件会被分成多个数据块存储;当有小文件跨数据块时,采用边界填充算法写入一段空白文件将原来的数据块填充,然后在新申请的数据块中写入该文件;边界填充算法过程如下:
Step1:依次计算每个文件的偏移,在数据块的边界处,检查是否有文件会横跨两个数据块,如果没有,转向Step3,否则,转向Step2;
Step2:在这个横跨两个数据块的小文件前,建立额外的局部索引文件,此索引文件的偏移是下一个数据块的起始位置,横跨小文件的偏移是该局部索引文件的结束位置,设块长是Lblock,局部索引文件的大小是Lindex,新块的序列号是W,新索引文件偏移量是Loffset,新索引文件长度是Llength,横跨小文件的偏移量是Lfoffset,则
Loffset=(W-1)×Lblock
Llength=Lindex
Lfoffset=Loffset+Llength
Step3:对下一个数据块,重复步骤Step1和Step2;
在完成边界填充后,能够确定每一个小文件在merged file内的顺序和偏移,因此可以建立局部索引文件;
(4)在内存中,根据局部索引文件中每个文件的偏移对小文件进行归并,用空白文件填充两个文件之间的空白区域。将局部索引文件和所有小文件依次合并成为merged file。
2.客户端向NameNode申请上传merged file,按照原有Hadoop文件系统的流程,NameNode为merged file分配数据块,建立元数据,将元数据返回给客户端。
3.客户端根据元数据与指定的DataNode建立连接。DataNode准备就绪后,客户端将数据写入DataNode,上传过程结束。
B.下载模块
下载模块包括根据merged file获取元数据、数据块的解析、文件的读取和预取。下载活动如图3所示,详细流程如下:
1)下载小文件时,首先查找客户端的缓存文件,如果缓存中存在此小文件,则直接从缓存读取,此次读请求结束。如果缓存中不存在所请求的小文件,则将小文件映射到merged file,查找该merged file的元数据和索引信息是否存在,如果存在则转向步骤4)和6),否则转向步骤2)。
2)客户端向NameNode发送命令,请求该merged file的元数据信息。
3)NameNode将元数据返回给客户端,客户端缓存元数据。
4)根据元数据信息,客户端向指定的DataNode请求目标数据块,在DataNode端,目标数据块被加载到内存中。首先,提取局部索引文件,然后由请求的小文件名得到该文件的长度和偏移。
5)根据长度和偏移量,将小文件从目标数据块中读出,返回到客户端,同时将局部索引文件返回客户端,转向步骤7)。
6)根据该merged file的元数据,客户端向指定的DataNode请求目标数据块,然后根据索引信息中小文件的长度和偏移将小文件读出,返回到客户端。
7)在完成小文件读取以后,预取策略被激活。更多的关联小文件被读取并缓存在客户端。
Claims (5)
1.一种基于Hadoop的海量非独立小文件关联存储方法,其特征在于,包括DataNode端局部索引管理、文件归并和元数据缓存、局部索引文件预取和关联文件预取,所述非独立小文件是指某些大文件被分割成许多小的文件进行存储和读取,这些小文件是该大文件的一部分;具体步骤如下:
(1)将属于某个大文件的所有小文件归并为一个文件,称之为mergedfile,该文件归并步骤用于提高非独立小文件存储效率;(2)对每个mergedfile建立一个局部索引,并在上传时将局部索引文件与文件实体一同存放在Hadoop文件系统的DataNode上,该DataNode端局部索引管理步骤用于归并后小文件的管理;(3)在读取非独立小文件时,采用元数据缓存、局部索引文件预取和关联文件预取,该步骤用于提高非独立小文件的读取效率。
2.如权利要求1所述的基于Hadoop的海量非独立小文件关联存储方法,其特征在于,所述DataNode端局部索引管理包括:
为每一个merged file建立一个局部索引文件,记录属于该merged file的所有小文件的起始位置和长度,局部索引文件位于该merged file的每一个块的起始位置,并且只为该merged file服务;
(1)局部索引文件结构
局部索引文件采用静态查找表结构,由索引头部、序列索引和文件索引三部分构成;其中索引头部由占1字节的版本号、占4字节的索引项数和占4字节的局部索引文件长度组成;序列索引由占4字节的序列名称、占4字节的文件索引的起始编号和占4字节的文件索引项数构成;文件索引项由占16字节的文件名称、占4字节的文件长度和占4字节的文件偏移构成;
(2)读文件时对局部索引文件的操作
首先,根据merged file名从NameNode获取元数据;然后,由merged file的元数据,从Hadoop文件系统的相应DataNode读取指定的数据块,并根据数据块内索引文件长度项读取数据块的局部索引文件;最后根据小文件名称,查找局部索引文件,获得该小文件的起始位置和长度,从而完成对小文件的读操作;
当该merged file的小文件数目少于1000时,采用顺序查找方法;当小文件的数目超过1000时,顺序查找会影响读取性能,在文件索引上建立序列索引,避免查询的开销过大;
如果是一级索引格式,则从局部索引文件中第一个目录项开始,与请求小文件名称逐条对比,若文件索引项的小文件名称符合,则查找成功,返回该小文件索引记录;否则,继续查找直至最后一个记录项,若没有记录项符合,则返回小文件名查找失败;
如果是两级索引格式,则查找分为两个阶段:首先根据待查小文件的序列名称,在序列索引表中查找序列,如果索引表内没有记录项,则表明该序列不存在;否则根据序列指定的位置,开始顺序查找文件索引位置。
3.如权利要求1所述的基于Hadoop的海量非独立小文件关联存储方法,其特征在于,所述的文件归并操作在Hadoop文件系统的客户端上进行,将属于同一个大文件的所有小文件合并成一个文件;具体步骤如下:
(1)计算非独立小文件总数,根据文件的数目决定采用文件索引还是采用序列索引+文件索引,由于索引每项长度固定,计算得出局部索引文件的长度,用Lindex表示,过程如下:
Step1,如果采用一级索引格式,用Lfindex表示单个索引项的长度,Number表示小文件总数,Lhead表示索引头部的长度,则
Lindex=Lfindex×Number+Lhead
Step2,如果采用两级索引结构,假设有N个序列,每一个序列的小文件数为Number1,Number2,…,NumberN,Lsindex表示序列索引长度,则
Lindex=N×Lsindex+(Number1+Number2+…+NumberN)×Lfindex+Lhead
(2)计算该merged file所有非独立小文件的长度和与局部索引文件长度的和Lmerge,将Lmerge与Hadoop文件系统的块大小作比较;
(3)如果Lmerge小于Hadoop文件系统的块大小,则该merged file只占用一个数据块;所有文件按默认顺序存放:首先是局部索引文件,然后是小文件序列,小文件序列按照小文件的逻辑顺序依次排列;按照小文件顺序计算每个小文件的偏移和长度,建立局部索引文件;最后进行第(4)步;
如果Lmerge超过Hadoop文件系统的块长,归并后文件会被分成多个数据块存储;当有小文件跨数据块时,采用边界填充算法写入一段空白文件将原来的数据块填充,然后在新申请的数据块中写入该文件;
(4)根据局部索引文件中每个文件的偏移对小文件进行归并,用空白文件填充两个文件之间的空白区域。
4.如权利要求3所述的基于Hadoop的海量非独立小文件关联存储方法,其特征在于,所述的边界填充算法,过程如下:
Step1:依次计算每个文件的偏移,在数据块的边界处,检查是否有文件会横跨两个数据块,如果没有,转向Step3,否则,转向Step2;
Step2:在这个横跨两个数据块的小文件前,建立额外的局部索引文件,此索引文件的偏移是下一个数据块的起始位置,横跨小文件的偏移是该局部索引文件的结束位置,设块长是Lblock,局部索引文件的大小是Lindex,新块的序列号是W,新索引文件偏移量是Loffset,新索引文件长度是Llength,横跨小文件的偏移量是Lfoffset,则
Loffset=(W-1)×Lblock
Llength=Lindex
Lfoffset=Loffset+Llength
Step3:对下一个数据块,重复步骤Step1和Step2;
在完成边界填充后,能够确定每一个小文件在merged file内的顺序和偏移,因此可以建立局部索引文件;
5.如权利要求1所述的基于Hadoop的海量非独立小文件关联存储方法,其特征在于,所述的元数据缓存、局部索引文件预取和关联文件预取包括:
(1)元数据缓存:当小文件被读取时,将小文件映射到merged file以获取merged file的元数据;NameNode将元数据返回给客户端后,客户端根据元数据信息与相应的DataNodes交互;然后客户端将该merged file的元数据缓存,则如果该merged file的其它小文件被请求时,能够直接从缓存中读取元数据从而减少与NameNode的交互;
(2)局部索引文件预取:根据merged file的元数据,客户端获知从哪些数据块中读取被请求文件;如果局部索引文件已经被预取,当属于该mergedfile的小文件被请求时,客户端根据被缓存的索引信息,直接从对应DataNode中读取;否则,局部索引文件预取操作被触发,将局部索引文件预取到客户端的缓存中;在缓存中,预取得到的局部索引文件和元数据被处理,为每一个小文件生成元数据索引信息,索引信息包括:原始小文件文件名(16字节)、DataNode ID(4字节)、块ID(4字节)、偏移(4字节)和长度(4字节);
(3)关联文件预取:同一个merged file的非独立小文件有着直观的关联关系和明确的逻辑顺序,当被请求的小文件返回到客户端后,关联文件预取操作被触发,根据文件之间的逻辑顺序将该merged file下的相关小文件预取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110312671A CN102332027A (zh) | 2011-10-15 | 2011-10-15 | 一种基于Hadoop的海量非独立小文件关联存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110312671A CN102332027A (zh) | 2011-10-15 | 2011-10-15 | 一种基于Hadoop的海量非独立小文件关联存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102332027A true CN102332027A (zh) | 2012-01-25 |
Family
ID=45483803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110312671A Pending CN102332027A (zh) | 2011-10-15 | 2011-10-15 | 一种基于Hadoop的海量非独立小文件关联存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102332027A (zh) |
Cited By (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257970A (zh) * | 2012-02-17 | 2013-08-21 | 百度在线网络技术(北京)有限公司 | 用于hdfs主节点的测试方法及装置 |
CN103279474A (zh) * | 2013-04-10 | 2013-09-04 | 深圳康佳通信科技有限公司 | 一种视频文件索引方法及系统 |
CN103310158A (zh) * | 2013-06-14 | 2013-09-18 | 大唐移动通信设备有限公司 | 文件处理方法及装置 |
CN103377269A (zh) * | 2012-04-27 | 2013-10-30 | 国际商业机器公司 | 传感器数据定位方法和装置 |
CN103699627A (zh) * | 2013-12-20 | 2014-04-02 | 北京遥测技术研究所 | 一种基于Hadoop集群的超大文件并行数据块定位方法 |
CN103856567A (zh) * | 2014-03-26 | 2014-06-11 | 西安电子科技大学 | 基于Hadoop分布式文件系统的小文件存储方法 |
CN103914483A (zh) * | 2013-01-07 | 2014-07-09 | 深圳市腾讯计算机系统有限公司 | 文件存储方法、装置及文件读取方法、装置 |
CN104142937A (zh) * | 2013-05-07 | 2014-11-12 | 深圳中兴网信科技有限公司 | 一种分布式数据存取方法、装置和系统 |
CN104572670A (zh) * | 2013-10-15 | 2015-04-29 | 方正国际软件(北京)有限公司 | 一种小文件的存储、查询及删除方法和系统 |
CN104765876A (zh) * | 2015-04-24 | 2015-07-08 | 中国人民解放军信息工程大学 | 海量gnss小文件云存储方法 |
CN104933110A (zh) * | 2015-06-03 | 2015-09-23 | 电子科技大学 | 一种基于MapReduce的数据预取方法 |
CN105141666A (zh) * | 2015-07-29 | 2015-12-09 | 江苏天联信息科技发展有限公司 | 信息数据存储方法及装置 |
CN105183839A (zh) * | 2015-09-02 | 2015-12-23 | 华中科技大学 | 一种基于Hadoop的小文件分级索引的存储优化方法 |
CN105279240A (zh) * | 2015-09-28 | 2016-01-27 | 暨南大学 | 客户端起源信息关联感知的元数据预取方法及系统 |
CN106326397A (zh) * | 2016-08-19 | 2017-01-11 | 东软集团股份有限公司 | 生成索引文件的方法及装置 |
CN106446099A (zh) * | 2016-09-13 | 2017-02-22 | 国家超级计算深圳中心(深圳云计算中心) | 一种分布式云存储方法、系统及其上传下载方法 |
CN106446079A (zh) * | 2016-09-08 | 2017-02-22 | 中国科学院计算技术研究所 | 一种面向分布式文件系统的文件预取/缓存方法及装置 |
CN106503008A (zh) * | 2015-09-07 | 2017-03-15 | 网宿科技股份有限公司 | 文件存储方法和装置及文件查询方法和装置 |
CN106570113A (zh) * | 2016-10-25 | 2017-04-19 | 中国电力科学研究院 | 一种海量矢量切片数据云存储方法及系统 |
EP2750020A3 (en) * | 2012-12-27 | 2017-04-26 | EchoStar Global B.V. | Systems and methods for managing files in a computer system by segmenting files |
CN106897391A (zh) * | 2017-01-24 | 2017-06-27 | 北京百悟科技有限公司 | 文件存储方法及装置 |
CN106909651A (zh) * | 2017-02-23 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于hdfs小文件写入和读取的方法 |
CN107291915A (zh) * | 2017-06-27 | 2017-10-24 | 北京奇艺世纪科技有限公司 | 一种小文件存储方法、小文件读取方法及系统 |
CN107341267A (zh) * | 2017-07-24 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种分布式文件系统访问方法及平台 |
CN107656985A (zh) * | 2017-09-11 | 2018-02-02 | 北京京东尚科信息技术有限公司 | 网页查询方法及其系统 |
CN108427295A (zh) * | 2018-03-20 | 2018-08-21 | 深圳万智联合科技有限公司 | 一种基于云存储的智慧家居系统 |
CN108664664A (zh) * | 2018-05-22 | 2018-10-16 | 电子科技大学 | 一种海量教育文件关联存储方法 |
CN108806773A (zh) * | 2018-05-21 | 2018-11-13 | 上海熙业信息科技有限公司 | 医学影像云存储平台设计方法 |
CN109002260A (zh) * | 2018-07-02 | 2018-12-14 | 深圳市茁壮网络股份有限公司 | 一种缓存数据的处理方法和处理系统 |
CN109800208A (zh) * | 2019-01-18 | 2019-05-24 | 湖南友道信息技术有限公司 | 网络溯源系统及其数据处理方法、计算机存储介质 |
CN109871181A (zh) * | 2017-12-01 | 2019-06-11 | 航天信息股份有限公司 | 一种对象存取方法及装置 |
CN110276713A (zh) * | 2019-05-06 | 2019-09-24 | 中国科学院计算机网络信息中心 | 一种面向遥感影像数据的高效缓存方法及系统 |
CN110515920A (zh) * | 2019-08-30 | 2019-11-29 | 北京浪潮数据技术有限公司 | 一种基于Hadoop的海量小文件存取方法和系统 |
CN111026707A (zh) * | 2019-11-05 | 2020-04-17 | 中国科学院计算机网络信息中心 | 一种小文件对象的存取方法和装置 |
CN111159176A (zh) * | 2019-11-29 | 2020-05-15 | 中国科学院计算技术研究所 | 一种海量流数据的存储和读取的方法和系统 |
CN111258955A (zh) * | 2018-11-30 | 2020-06-09 | 北京白山耘科技有限公司 | 一种文件读取方法和系统、存储介质、计算机设备 |
CN112583904A (zh) * | 2020-12-04 | 2021-03-30 | 北京百度网讯科技有限公司 | 文件上传方法、装置、设备以及存储介质 |
CN112637616A (zh) * | 2020-12-08 | 2021-04-09 | 网宿科技股份有限公司 | 一种对象存储方法、系统及服务器 |
CN113986838A (zh) * | 2021-12-28 | 2022-01-28 | 成都云祺科技有限公司 | 基于文件系统的海量小文件处理方法、系统及存储介质 |
CN114896210A (zh) * | 2022-04-27 | 2022-08-12 | 中国航空工业集团公司沈阳飞机设计研究所 | 一种飞机试飞测试数据处理方法、系统、电子设备其介质 |
CN115269524A (zh) * | 2022-09-26 | 2022-11-01 | 创云融达信息技术(天津)股份有限公司 | 一种端到端小文件归集传输和存储的一体化系统及方法 |
CN117519612A (zh) * | 2024-01-06 | 2024-02-06 | 深圳市杉岩数据技术有限公司 | 基于索引在线拼接的海量小文件存储系统与方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100306286A1 (en) * | 2009-03-05 | 2010-12-02 | Chi-Hsien Chiu | Distributed steam processing |
CN101957863A (zh) * | 2010-10-14 | 2011-01-26 | 广州从兴电子开发有限公司 | 数据并行处理方法、装置及系统 |
CN101996250A (zh) * | 2010-11-15 | 2011-03-30 | 中国科学院计算技术研究所 | 一种基于Hadoop的海量流数据存储和查询方法及系统 |
-
2011
- 2011-10-15 CN CN201110312671A patent/CN102332027A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100306286A1 (en) * | 2009-03-05 | 2010-12-02 | Chi-Hsien Chiu | Distributed steam processing |
CN101957863A (zh) * | 2010-10-14 | 2011-01-26 | 广州从兴电子开发有限公司 | 数据并行处理方法、装置及系统 |
CN101996250A (zh) * | 2010-11-15 | 2011-03-30 | 中国科学院计算技术研究所 | 一种基于Hadoop的海量流数据存储和查询方法及系统 |
Non-Patent Citations (2)
Title |
---|
BO DONG等: "A Novel Approach to Improving the Efficiency of Storing and Accessing Small Files on Hadoop: a Case Study by PowerPoint Files", 《2010 IEEE INTERNATIONAL CONFERENCE ON SERVICES COMPUTING》 * |
BO DONG等: "Correlation based File Prefetching Approach for Hadoop", 《2ND IEEE INTERNATIONAL CONFERENCE ON CLOUD COMPUTING TECHNOLOGY AND SCIENCE》 * |
Cited By (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103257970B (zh) * | 2012-02-17 | 2016-06-15 | 百度在线网络技术(北京)有限公司 | 用于hdfs主节点的测试方法及装置 |
CN103257970A (zh) * | 2012-02-17 | 2013-08-21 | 百度在线网络技术(北京)有限公司 | 用于hdfs主节点的测试方法及装置 |
CN103377269A (zh) * | 2012-04-27 | 2013-10-30 | 国际商业机器公司 | 传感器数据定位方法和装置 |
CN103377269B (zh) * | 2012-04-27 | 2016-12-28 | 国际商业机器公司 | 传感器数据定位方法和装置 |
US9959277B2 (en) | 2012-12-27 | 2018-05-01 | Echostar Technologies Llc | Systems and methods for managing files in a computer system by segmenting files |
EP2750020A3 (en) * | 2012-12-27 | 2017-04-26 | EchoStar Global B.V. | Systems and methods for managing files in a computer system by segmenting files |
CN103914483A (zh) * | 2013-01-07 | 2014-07-09 | 深圳市腾讯计算机系统有限公司 | 文件存储方法、装置及文件读取方法、装置 |
CN103914483B (zh) * | 2013-01-07 | 2018-09-25 | 深圳市腾讯计算机系统有限公司 | 文件存储方法、装置及文件读取方法、装置 |
CN103279474A (zh) * | 2013-04-10 | 2013-09-04 | 深圳康佳通信科技有限公司 | 一种视频文件索引方法及系统 |
CN104142937A (zh) * | 2013-05-07 | 2014-11-12 | 深圳中兴网信科技有限公司 | 一种分布式数据存取方法、装置和系统 |
CN103310158A (zh) * | 2013-06-14 | 2013-09-18 | 大唐移动通信设备有限公司 | 文件处理方法及装置 |
CN103310158B (zh) * | 2013-06-14 | 2016-03-09 | 大唐移动通信设备有限公司 | 文件处理方法及装置 |
CN104572670B (zh) * | 2013-10-15 | 2019-07-23 | 方正国际软件(北京)有限公司 | 一种小文件的存储、查询及删除方法和系统 |
CN104572670A (zh) * | 2013-10-15 | 2015-04-29 | 方正国际软件(北京)有限公司 | 一种小文件的存储、查询及删除方法和系统 |
CN103699627B (zh) * | 2013-12-20 | 2017-03-15 | 北京遥测技术研究所 | 一种基于Hadoop集群的超大文件并行数据块定位方法 |
CN103699627A (zh) * | 2013-12-20 | 2014-04-02 | 北京遥测技术研究所 | 一种基于Hadoop集群的超大文件并行数据块定位方法 |
CN103856567A (zh) * | 2014-03-26 | 2014-06-11 | 西安电子科技大学 | 基于Hadoop分布式文件系统的小文件存储方法 |
CN103856567B (zh) * | 2014-03-26 | 2017-05-17 | 西安电子科技大学 | 基于Hadoop分布式文件系统的小文件存储方法 |
CN104765876A (zh) * | 2015-04-24 | 2015-07-08 | 中国人民解放军信息工程大学 | 海量gnss小文件云存储方法 |
CN104765876B (zh) * | 2015-04-24 | 2017-11-10 | 中国人民解放军信息工程大学 | 海量gnss小文件云存储方法 |
CN104933110B (zh) * | 2015-06-03 | 2018-02-09 | 电子科技大学 | 一种基于MapReduce的数据预取方法 |
CN104933110A (zh) * | 2015-06-03 | 2015-09-23 | 电子科技大学 | 一种基于MapReduce的数据预取方法 |
CN105141666B (zh) * | 2015-07-29 | 2018-12-14 | 江苏天联信息科技发展有限公司 | 信息数据存储方法及装置 |
CN105141666A (zh) * | 2015-07-29 | 2015-12-09 | 江苏天联信息科技发展有限公司 | 信息数据存储方法及装置 |
CN105183839A (zh) * | 2015-09-02 | 2015-12-23 | 华中科技大学 | 一种基于Hadoop的小文件分级索引的存储优化方法 |
CN106503008B (zh) * | 2015-09-07 | 2020-02-14 | 网宿科技股份有限公司 | 文件存储方法和装置及文件查询方法和装置 |
CN106503008A (zh) * | 2015-09-07 | 2017-03-15 | 网宿科技股份有限公司 | 文件存储方法和装置及文件查询方法和装置 |
CN105279240A (zh) * | 2015-09-28 | 2016-01-27 | 暨南大学 | 客户端起源信息关联感知的元数据预取方法及系统 |
CN105279240B (zh) * | 2015-09-28 | 2018-07-13 | 暨南大学 | 客户端起源信息关联感知的元数据预取方法及系统 |
CN106326397A (zh) * | 2016-08-19 | 2017-01-11 | 东软集团股份有限公司 | 生成索引文件的方法及装置 |
CN106446079B (zh) * | 2016-09-08 | 2019-06-18 | 中国科学院计算技术研究所 | 一种面向分布式文件系统的文件预取/缓存方法及装置 |
CN106446079A (zh) * | 2016-09-08 | 2017-02-22 | 中国科学院计算技术研究所 | 一种面向分布式文件系统的文件预取/缓存方法及装置 |
CN106446099A (zh) * | 2016-09-13 | 2017-02-22 | 国家超级计算深圳中心(深圳云计算中心) | 一种分布式云存储方法、系统及其上传下载方法 |
CN106570113A (zh) * | 2016-10-25 | 2017-04-19 | 中国电力科学研究院 | 一种海量矢量切片数据云存储方法及系统 |
CN106570113B (zh) * | 2016-10-25 | 2022-04-01 | 中国电力科学研究院 | 一种海量矢量切片数据云存储方法及系统 |
CN106897391A (zh) * | 2017-01-24 | 2017-06-27 | 北京百悟科技有限公司 | 文件存储方法及装置 |
CN106909651A (zh) * | 2017-02-23 | 2017-06-30 | 郑州云海信息技术有限公司 | 一种基于hdfs小文件写入和读取的方法 |
CN107291915A (zh) * | 2017-06-27 | 2017-10-24 | 北京奇艺世纪科技有限公司 | 一种小文件存储方法、小文件读取方法及系统 |
CN107341267A (zh) * | 2017-07-24 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种分布式文件系统访问方法及平台 |
CN107656985A (zh) * | 2017-09-11 | 2018-02-02 | 北京京东尚科信息技术有限公司 | 网页查询方法及其系统 |
CN109871181A (zh) * | 2017-12-01 | 2019-06-11 | 航天信息股份有限公司 | 一种对象存取方法及装置 |
CN108427295B (zh) * | 2018-03-20 | 2020-11-27 | 王锐 | 一种基于云存储的智慧家居系统 |
CN108427295A (zh) * | 2018-03-20 | 2018-08-21 | 深圳万智联合科技有限公司 | 一种基于云存储的智慧家居系统 |
CN108806773A (zh) * | 2018-05-21 | 2018-11-13 | 上海熙业信息科技有限公司 | 医学影像云存储平台设计方法 |
CN108664664A (zh) * | 2018-05-22 | 2018-10-16 | 电子科技大学 | 一种海量教育文件关联存储方法 |
CN109002260A (zh) * | 2018-07-02 | 2018-12-14 | 深圳市茁壮网络股份有限公司 | 一种缓存数据的处理方法和处理系统 |
CN109002260B (zh) * | 2018-07-02 | 2021-08-13 | 深圳市茁壮网络股份有限公司 | 一种缓存数据的处理方法和处理系统 |
CN111258955B (zh) * | 2018-11-30 | 2023-09-19 | 北京白山耘科技有限公司 | 一种文件读取方法和系统、存储介质、计算机设备 |
CN111258955A (zh) * | 2018-11-30 | 2020-06-09 | 北京白山耘科技有限公司 | 一种文件读取方法和系统、存储介质、计算机设备 |
CN109800208A (zh) * | 2019-01-18 | 2019-05-24 | 湖南友道信息技术有限公司 | 网络溯源系统及其数据处理方法、计算机存储介质 |
CN110276713A (zh) * | 2019-05-06 | 2019-09-24 | 中国科学院计算机网络信息中心 | 一种面向遥感影像数据的高效缓存方法及系统 |
CN110515920A (zh) * | 2019-08-30 | 2019-11-29 | 北京浪潮数据技术有限公司 | 一种基于Hadoop的海量小文件存取方法和系统 |
CN111026707A (zh) * | 2019-11-05 | 2020-04-17 | 中国科学院计算机网络信息中心 | 一种小文件对象的存取方法和装置 |
CN111026707B (zh) * | 2019-11-05 | 2023-01-17 | 中国科学院计算机网络信息中心 | 一种小文件对象的存取方法和装置 |
CN111159176A (zh) * | 2019-11-29 | 2020-05-15 | 中国科学院计算技术研究所 | 一种海量流数据的存储和读取的方法和系统 |
CN112583904A (zh) * | 2020-12-04 | 2021-03-30 | 北京百度网讯科技有限公司 | 文件上传方法、装置、设备以及存储介质 |
CN112637616A (zh) * | 2020-12-08 | 2021-04-09 | 网宿科技股份有限公司 | 一种对象存储方法、系统及服务器 |
CN112637616B (zh) * | 2020-12-08 | 2024-02-23 | 网宿科技股份有限公司 | 一种对象存储方法、系统及服务器 |
CN113986838A (zh) * | 2021-12-28 | 2022-01-28 | 成都云祺科技有限公司 | 基于文件系统的海量小文件处理方法、系统及存储介质 |
CN114896210A (zh) * | 2022-04-27 | 2022-08-12 | 中国航空工业集团公司沈阳飞机设计研究所 | 一种飞机试飞测试数据处理方法、系统、电子设备其介质 |
CN115269524A (zh) * | 2022-09-26 | 2022-11-01 | 创云融达信息技术(天津)股份有限公司 | 一种端到端小文件归集传输和存储的一体化系统及方法 |
CN115269524B (zh) * | 2022-09-26 | 2023-03-24 | 创云融达信息技术(天津)股份有限公司 | 一种端到端小文件归集传输和存储的一体化系统及方法 |
CN117519612A (zh) * | 2024-01-06 | 2024-02-06 | 深圳市杉岩数据技术有限公司 | 基于索引在线拼接的海量小文件存储系统与方法 |
CN117519612B (zh) * | 2024-01-06 | 2024-04-12 | 深圳市杉岩数据技术有限公司 | 基于索引在线拼接的海量小文件存储系统与方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102332027A (zh) | 一种基于Hadoop的海量非独立小文件关联存储方法 | |
CN102332029B (zh) | 一种基于Hadoop 的海量可归类小文件关联存储方法 | |
US20150347553A1 (en) | Object Storage System with Local Transaction Logs, a Distributed Namespace, and Optimized Support for User Directories | |
CN102523285B (zh) | 一种基于对象分布式文件系统的存储缓存方法 | |
CN103179185B (zh) | 一种分布式文件系统客户端缓存中文件创建方法及其系统 | |
CN105183839A (zh) | 一种基于Hadoop的小文件分级索引的存储优化方法 | |
JP2020038623A (ja) | データを記憶するための方法、装置及びシステム | |
CN105677826A (zh) | 一种针对海量非结构化数据的资源管理方法 | |
CN102541985A (zh) | 一种分布式文件系统中客户端目录缓存的组织方法 | |
CN103530387A (zh) | 一种hdfs针对小文件的改进方法 | |
CN103020315A (zh) | 一种基于主从分布式文件系统的海量小文件存储方法 | |
CN104536959A (zh) | 一种Hadoop存取海量小文件的优化方法 | |
CN103678491A (zh) | 一种基于Hadoop中小文件优化和倒排索引的方法 | |
CN102169507A (zh) | 一种分布式实时搜索引擎 | |
CN103366016A (zh) | 基于hdfs的电子文件集中存储及优化方法 | |
CN108021717B (zh) | 一种轻量级嵌入式文件系统的实现方法 | |
CN110046133A (zh) | 一种存储文件系统的元数据管理方法、装置及系统 | |
CN104899297A (zh) | 具有存储感知的混合索引结构 | |
CN105205126A (zh) | 一种地图瓦片的存储方法及其存储系统 | |
CN103902479A (zh) | 一种基于元数据日志的元数据缓存快速重建机制 | |
CN107368608A (zh) | 基于arc替换算法的hdfs小文件缓存管理方法 | |
CN104978330A (zh) | 一种数据存储的方法及装置 | |
CN108920616A (zh) | 一种元数据访问性能优化方法、系统、装置及存储介质 | |
CN110347651A (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
US10360189B2 (en) | Data object storage across multiple storage nodes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120125 |