一种基于Hadoop的小文件分级索引的存储优化方法_2

文档序号:9432660阅读:来源:国知局
返回给用户。
[0032]进一步地,所述方法还包括:小文件处理服务器从步骤(2.4)得到的合并文件的元数据信息与索引信息中,提取每个小文件的文件名,数据块位置、偏移量和文件长度,得到小文件的元数据信息,并将每个小文件及其相应的元数据信息存储到缓存中。
[0033]进一步地,所述方法还包括,在小文件的元数据预取记录和小文件预取记录的首部,分别添加一个用于记录文件访问频率的32位的文件访问标识,以五分钟为计时标准,如果在五分钟之内有访问小文件的请求,则将文件访问标识加1,否则,将文件访问标识减1,如果文件访问标识为0,则将这个小文件从缓存中移除。
[0034]与现有技术相比,本发明的有益效果是:
[0035](I)能够向HDFS文件系统上传海量小文件和并且能够实现小文件快速索引,独立于HDFS文件系统的小文件处理服务器通过建立相应的小文件索引和小文件处理机制,来有效完成小文件的合并,映射,预取,这可以很大程度上减少namenode上的开销,有效改善系统处理小文件的效率,而且也不会改变现有的HDFS系统,保证了系统的通用性;在小文件处理服务器,通过将小文件进一步进行划分,有区别地建立合适的索引,能够节省索引文件的存储空间;小文件处理服务器中的缓存缓存部分已访问文件的相关文件及相应的元数据信息,并制定更新策略,来提高访问效率
[0036](2)将海量小文件合并为有限个数的大文件,并且对小文件的索引方法进一步划分,降低了 Hadoop集群中NameNode节点的内存占有率;
[0037](3)将小文件管理功能封装成为一个服务,降低了用户的使用难度;
[0038](4)独立的小文件处理服务器不会影响到HDFS文件系统的正常运行,提高了文件访问效率。
【附图说明】
[0039]图1为本发明一种基于Hadoop的小文件分级索引的存储优化方法的流程图;
[0040]图2为本发明的小文件存储流程示意图;
[0041]图3为本发明的小文件读取流程示意图;
[0042]图4为K级索引文件的索引结构示意图。
【具体实施方式】
[0043]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0044]如图1所示,为本发明一种基于Hadoop的小文件分级索引的存储优化方法,在Hadoop分布式文件系统HDFS之外,新增一台用于文件读写请求的网络服务器Webserver,新增一台用于处理小文件的小文件处理服务器,其步骤如下:
[0045](I)网络服务器Webserver接收文件读取或写入请求,并判断文件是否大于预设块大小,大于预设块大小的文件按照HDFS文件系统的正常流程处理,小于预设块大小的文件被送到小文件处理服务器进行后续处理;
[0046](2)小文件处理服务器对小文件进行进一步的划分,把I?1023KB之间的小文件划分为K级小文件,把IM到预设块大小之间的小文件划分为M级小文件;
[0047](3)对K级小文件建立二级索引,其中,一级索引存储在小文件处理服务器中,二级索引存储在datanode中,对M级小文件建立线性索引结构,存储在小文件处理服务器中,以减少小文件处理服务器的开销;
[0048](4)小文件处理服务器的缓存区保存部分已访问的小文件和它的元数据信息,并根据小文件的访问频率来更新缓存区中的小文件及其元数据。
[0049]所述的二级索引,一级索引是范围索引,二级索引才是真正记录小文件在合并后的大文件中的偏移的索引文件。所述索引结构如图4所示。每当二级索引文件记录超过1000记录(默认设置为1000条),则向一级索引记录一个范围,包括这1000条的第一条记录的索引值,最后一条的索引值,第一条记录的索引值在二级索引文件中的位置,最后一条的索引值在二级索引文件中的结束位置。二级索引记录的信息包括文件名的索引值,文件的相对路径名,是目录还是文件,在合并后文件中的位置,文件的长度,合并后的文件名。
[0050]小文件处理服务器主要负责小文件的合并,映射及预取。它的功能有三方面:
[0051](I)写入文件时,它根据小文件的大小建立索引,I?1023KB的小文件采用线性索引结构,IM到块大小之间的小文件采用二级索引结构,对文件进行合并;
[0052](2)读取文件时,它完成小文件到其合并文件的映射过程,并根据索引文件把所需小文件从大文件中分离出来;
[0053](3)小文件处理服务器还设有缓存区,可根据文件相关性,在文件分离时预取一部分小文件,并设计相应的缓存更新策略,来提高文件访问效率。
[0054]对于本发明中HDFS部分来说,在NameNode层,我们维持了原有的NameNode和Secondary NameNode的关系,其作用也与原HDFS中NameNode相同,在DataNode层,我们将DataNode分为两块云存储区域,在DataNode首部加入K级小文件的二级索引文件,其他部分仍然作为数据存储区。
[0055]对于独立的小文件处理服务器而言,它只负责小文件的处理,对小文件进一步细划分,以及缓存部分已访问文件的相关文件及相应的元数据信息,并制定更新策略。
[0056]本发明方法的架构下,大文件和处理后的小文件均在文件等待队列等待写入或读取,这就引发了计算机并发执行的理念,使得在处理小文件的合并,映射或读取的同时不影响对大文件或者对已合并的小文件的写入或读取,来提高并发存储访问效率。
[0057]图2为本发明基于hadoop的小文件分级索引的存储优化方法的写入流程图,具体的,如图2,所述方法包括小文件的判断,分类及写入:网络服务器Webserver接收文件写入请求,并判断文件是否大于预设块大小,大于预设块大小的文件按照HDFS文件系统的正常流程处理,小于预设块大小的文件被送到小文件处理服务器进行后续处理;
[0058]具体的,所述写入过程包括:
[0059](1.1)网络服务器Webserver判断文件的请求类型,此步骤中,检测的请求类型应为文件写入请求;
[0060](1.2)网络服务器Webserver判断文件是否大于预设块大小,大于预设块大小的文件按照HDFS文件系统的正常流程处理,小于预设块大小的文件被送到小文件处理服务器进行后续处理,此步骤中,请求文件大小小于预设块大小;
[0061](1.3)小文件处理服务器对小文件进行进一步的划分,把I?1023KB之间的小文件划分为K级小文件,把IM到预设块大小之间的小文件划分为M级小文件;
[0062](1.4)对K级小文件建立二级索引,其中,一级索引存储在小文件处理服务器中,二级索引存储在datanode中,对M级小文件建立线性索引结构,存储在小文件处理服务器中,以减少小文件处理服务器的开销;
[0063]图3为本发明基于hadoop的小文件分级索引的存储优化方法的读取流程图,具体的,如图3,所述方法包括小文件的判断,分类及读取:网络服务器Webserver接收文件读取请求,并判断文件是否大于预设块大小,大于预设块大小的文件按照HDFS文件系统的正常流程处理,小于预设块大小的文件读取请求被送到小文件处理服务器进行后续处理;
[0064]具体的,所述读取过程包括:
[0065](2.1)小文件处理服务器接收到小文件的读取请求,首先会检查缓存中是否存在需要读取的小文件,若存在,小文件处理服务器将缓存中的读请求文件取出返回给客户,完成读取操作,否则,执行步骤(2.2);
[0066](2.2)小文件处理服务器会检查缓存中是否存在读请求小文件的元数据信息,若存在,小文件处理服
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1