一种基于Hadoop的海量非独立小文件关联存储方法技术

技术编号:7077842 阅读:498 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于Hadoop的海量非独立小文件关联存储方法,主要解决海量的非独立小文件存取效率和读取效率较低的问题。针对某个大文件被分割成的许多小文件,即非独立小文件,本发明专利技术的特征在于:(1)将属于某个大文件的所有小文件归并为一个文件,称为merged?file;(2)对每个merged?file建立一个局部索引,并在上传时将局部索引文件与文件实体一同存放在Hadoop系统的DataNode上;(3)在读取非独立小文件时,采用元数据缓存、局部索引文件预取和关联文件预取提高文件的读取效率。通过以上方法,提高了现有Hadoop系统存储小文件的存储效率和读取效率。本发明专利技术适用于通用场景下海量的非独立小文件的存储和管理。

【技术实现步骤摘要】

本专利技术涉及海量非独立小文件在Hadoop (分布式文件系统)上的存储及读取优化方。Hadoop是当前主流的云存储平台,它由一个NameNode和多个DataNode组成,其中 NameNode负责管理文件系统名称空间和控制外部客户端的访问,DataNode负责存储数据, 本专利技术主要解决现有大规模非独立小文件存储及读取效率较低的问题。
技术介绍
随着互联网的发展,需要存储的数据量日益庞大;而文件大小差异很大,从数千字节的小文件到数百兆字节的大文件。Hadoop分布式文件系统适合存储大文件,在存储小文件时其存储性能和读取性能严重下降。因此,如何有效地存储和管理大量的小文件,成为亟待解决的难题。针对如何有效地在分布式文件系统上存储海量的小文件、降低其读取延迟, 申请人:通过查新,得到3篇与本专利技术相关密切的专利,它们分别是1. 一种集群存储中并行访问大量小文件的方法及系统(专利号 CN201010178387. 1)。2. 一种机群文件系统中的小文件存储和访问方法(专利号CN201010208495. 9)。3.大批量文件数据存放和读取方法(专利号CN200710199002. 8)。专利1提出了一种集群存储中并行访问大量小文件的方法及系统,该方法包括 对写入的小文件进行缓冲;将缓冲的多个小文件合并为一个临时文件;将所述临时文件的元数据和数据对象存储至元数据服务器节点和数据服务器节点的后端存储中,从而可以有效地提高集群文件系统服务的响应时间和速度,提升数据整体的单位时间数据读写次数、 吞吐量。专利2提出了一种机群文件系统中的小文件存储和访问方法。该方法有三大步骤(1)设置阈值,区分大小文件;( 在元数据服务器上,存储小文件的数据;C3)在元数据服务器上,进行小文件创建、读写和删除。由于该专利技术把小文件的数据存储在元数据服务器上,这样对于小文件的IO访问操作,如创建、读写和删除等,发起IO访问的客户端只需要与元数据服务器交互,无需与数据服务器交互,减少了小文件访问的网络延迟,提高了小文件IO的性能,从而从整体上提高了机群文件系统的IO性能。专利3提出了一种大批量文件数据存取方法,包括将所有小文件的数据合并成一个大文件;建立每个小文件的文件名及其文件编号的一一对应关系;建立每个所述文件编号与小文件的文件信息的对应关系,所述文件信息包括所述小文件在所述大文件中的位置。相应地,该专利技术还公开一种大批量文件数据读取方法,用于读取按照本专利技术的存放方法存放的文件数据,包括步骤根据小文件的文件名来获得所述小文件的文件编号;根据所述文件编号获得所述小文件的文件信息;根据所述文件信息获得所述小文件在大文件中的位置;根据所述小文件在大文件中的位置,通过所述大文件的IO接口实现对所述小文件数据的读取。上述现有解决小文件存储问题的专利技术方案存在以下问题1.已有小文件存储效率的研究主要集中在非云存储的文件系统上,而不是针对云存储环境下的分布式文件系统,即Hadoop分布式文件系统上的存储优化方法;2.现有专利虽然提出了合并小文件的方法,但在合并时没有考虑文件之间的关联关系,并且合并后读取文件时所增加的索引查询会影响文件的读取效率。
技术实现思路
本专利技术的目的在于解决现有Hadoop分布式文件系统对大规模非独立小文件存储和读取效率低下的问题,提供一种Hadoop分布式文件系统上的存储优化方法。为达到以上目的,本专利技术是采取如下技术方案予以实现的,包括DataNode (Hadoop分布式文件系统的数据存储节点,用来存储数据)端局部索引管理、文件归并和元数据缓存、局部索引文件预取和关联文件预取,所述非独立小文件是指某些大文件被分割成许多小的文件进行存储和读取,这些小文件是该大文件的一部分;具体步骤如下(1)将属于某个大文件的所有小文件归并为一个文件,称之为merged file,该文件归并步骤用于提高非独立小文件存储效率;( 对每个merged file建立一个局部索引, 并在上传时将局部索引文件与文件实体一同存放在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)计算非独立小文件总数,根据文件的数目决定采用文件索引还是采用序列索引+文件索引,由于索引每项长度固定,计算得出局部索引文件的长度,用Lindra表示,过程如下乂印1,如果采用一级索引格式,用Lfintfa表示单个索引项的长度,Number表示小文件总数,Ltead表示索引头部的长度,则Lindex = Lfindex X Number+LheadMep2,如果采用两级索引结构,假设有N个序列,每一个序列的小文件数为 Number1, Number2,…,NumberN, Lsindex 表示序列索引长度,贝IjLindex = NXLsindex+ (Number^Number2+- +NumberN) XLfindex+Lhead(2)计算该merged file所有非独立小文件的长度和与局部索引文件长度的和 LmCTge,将Lmwge与Hadoop文件系统的块大小作比较;(3)本文档来自技高网
...

【技术保护点】
1.一种基于Hadoop的海量非独立小文件关联存储方法,其特征在于,包括DataNode端局部索引管理、文件归并和元数据缓存、局部索引文件预取和关联文件预取,所述非独立小文件是指某些大文件被分割成许多小的文件进行存储和读取,这些小文件是该大文件的一部分;具体步骤如下:(1)将属于某个大文件的所有小文件归并为一个文件,称之为merged file,该文件归并步骤用于提高非独立小文件存储效率;(2)对每个merged file建立一个局部索引,并在上传时将局部索引文件与文件实体一同存放在Hadoop文件系统的DataNode上,该DataNode端局部索引管理步骤用于归并后小文件的管理;(3)在读取非独立小文件时,采用元数据缓存、局部索引文件预取和关联文件预取,该步骤用于提高非独立小文件的读取效率。

【技术特征摘要】

【专利技术属性】
技术研发人员:郑庆华董博刘均马瑞宋凯磊
申请(专利权)人:西安交通大学
类型:发明
国别省市:87

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1