一种基于分布式文件系统的小文件存储方法和装置的制造方法_2

文档序号:9865504阅读:来源:国知局
,第一记录区中存储有数据文件的存储路径信息;
[0052]第二处理模块,用于将小文件存储到数据文件中,并将小文件对应的索引块信息存储到第二记录区中,索引块信息中包括:索引块号、小文件在数据文件中的起始偏移位置和小文件的大小。
[0053]较佳地,
[0054]第一处理模块可确定文件句柄队列中包括的文件句柄数是否已经达到预定阈值;如果否,则创建一个新的文件句柄,其中的数据文件和索引文件的第二记录区中均为空,并将新创建的文件句柄分配给小文件;如果是,则将位于文件句柄队列最前面的文件句柄分配给小文件;
[0055]相应地,第二处理模块可进一步用于,当小文件及其对应的索引块信息均已存储完成时,将为小文件分配的文件句柄放入到文件句柄队列的末尾。
[0056]另外,
[0057]第二处理模块还可进一步用于,如果为小文件分配的文件句柄的数据文件中的剩余存储空间小于小文件的大小或者发生存储异常,则将为小文件分配的文件句柄关闭,并从文件句柄队列中移除,并创建一个新的文件句柄,将新创建的文件句柄分配给小文件。
[0058]较佳地,
[0059]第一记录区可位于第二记录区的前面,且大小固定;第二记录区中按照索引块号由小到大的顺序依次存储有各索引块信息,且每个索引块信息的大小固定;
[0060]第二处理模块可从数据文件中已存储的数据结束位置开始,存储小文件;
[0061]小文件对应的索引块号等同于小文件在数据文件中的存储顺序号。
[0062]另外,
[0063]第二处理模块还可进一步用于,当小文件及其对应的索引块信息均已存储完成时,将小文件对应的索引文件的存储路径信息和索引块号返回给存储请求的发送方。
[0064]还有,
[0065]该装置中还可进一步包括:第三处理模块;
[0066]第三处理模块,用于当接收到针对任一小文件的读取请求时,获取其中携带的索引文件的存储路径信息和索引块号;根据获取到的索引文件的存储路径信息,找到相应的索引文件,并读取出存储在找到的索引文件的第一记录区中的数据文件的存储路径信息,根据读取出的数据文件的存储路径信息找到对应的数据文件;计算(获取到的索引块号-1)*每个索引块信息的大小,得到获取到的索引块号对应的索引块信息在找到的索引文件的第二记录区中的起始偏移位置,并根据得到的起始偏移位置和每个索引块信息的大小,从第二记录区中读取出获取到的索引块号对应的索引块信息;根据读取出的索引块信息中的小文件在数据文件中的起始偏移位置和小文件的大小,从找到的数据文件中读取出小文件,并返回给读取请求的发送方。
[0067]上述装置实施例的具体工作流程请参照前述方法实施例中的相应说明,此处不再赘述。
[0068]总之,本发明所述方案中,可采用将多个小文件合并存储到一个大的数据文件中的方式,来实现小文件的存储,从而仅需要维护每个数据文件及对应的索引文件的元数据信息,进而较好的节省了内存空间;比如,一个数据文件合并存储了 10000个200KB大小的小文件,那么只需要维护2个元数据信息即可,而如果按照现有方式,将这些小文件直接进行存储的话,将需要维护10000个元数据信息。
[0069]而且,本发明所述方案中,可利用文件句柄来实现多个小文件的并行存储,从而减少了小文件存储的等待时间,进而提高了小文件的存储效率。
[0070]另外,本发明所述方案中,通过一些简单的运算等,即可实现小文件的快速读取,从而提闻了小文件的读取效率。
[0071]综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于分布式文件系统HDFS的小文件存储方法,其特征在于,包括: 当接收到针对任一小文件的存储请求时,为小文件分配一个文件句柄,该文件句柄由一个索引文件和一个数据文件组成,其中,索引文件中包括一个第一记录区和一个第二记录区,第一记录区中存储有数据文件的存储路径信息; 将小文件存储到数据文件中,并将小文件对应的索引块信息存储到第二记录区中,索引块信息中包括:索引块号、小文件在数据文件中的起始偏移位置和小文件的大小。2.根据权利要求1所述的方法,其特征在于, 所述为小文件分配一个文件句柄包括: 确定文件句柄队列中包括的文件句柄数是否已经达到预定阈值; 如果否,则创建一个新的文件句柄,其中的数据文件和索引文件的第二记录区中均为空,并将新创建的文件句柄分配给小文件; 如果是,则将位于文件句柄队列最前面的文件句柄分配给小文件; 该方法进一步包括:当小文件及其对应的索引块信息均已存储完成时,将为小文件分配的文件句柄放入到文件句柄队列的末尾。3.根据权利要求2所述的方法,其特征在于, 该方法进一步包括: 如果为小文件分配的文件句柄的数据文件中的剩余存储空间小于小文件的大小或者发生存储异常,则将为小文件分配的文件句柄关闭,并从文件句柄队列中移除,并创建一个新的文件句柄,将新创建的文件句柄分配给小文件。4.根据权利要求1、2或3所述的方法,其特征在于, 第一记录区位于第二记录区的前面,且大小固定;第二记录区中按照索引块号由小到大的顺序依次存储有各索引块信息,且每个索引块信息的大小固定; 所述将小文件存储到数据文件中包括:从数据文件中已存储的数据结束位置开始,存储小文件; 小文件对应的索引块号等同于小文件在数据文件中的存储顺序号。5.根据权利要求4所述的方法,其特征在于, 该方法进一步包括: 当小文件及其对应的索引块信息均已存储完成时,将小文件对应的索引文件的存储路径信息和索引块号返回给存储请求的发送方。6.根据权利要求5所述的方法,其特征在于, 该方法进一步包括: 当接收到针对任一小文件的读取请求时,获取其中携带的索引文件的存储路径信息和索引块号; 根据获取到的索引文件的存储路径信息,找到相应的索引文件,并读取出存储在找到的索引文件的第一记录区中的数据文件的存储路径信息,根据读取出的数据文件的存储路径信息找到对应的数据文件; 计算(获取到的索引块号-1)*每个索引块信息的大小,得到获取到的索引块号对应的索引块信息在找到的索引文件的第二记录区中的起始偏移位置,并根据得到的起始偏移位置和每个索引块信息的大小,从第二记录区中读取出获取到的索引块号对应的索引块信息; 根据读取出的索引块信息中的小文件在数据文件中的起始偏移位置和小文件的大小,从找到的数据文件中读取出小文件,并返回给读取请求的发送方。7.一种基于分布式文件系统HDFS的小文件存储装置,其特征在于,包括:第一处理模块和第二处理模块; 所述第一处理模块,用于当接收到针对任一小文件的存储请求时,为小文件分配一个文件句柄,该文件句柄由一个索弓I文件和一个数据文件组成,其中,索引文件中包括一个第一记录区和一个第二记录区,第一记录区中存储有数据文件的存储路径信息; 所述第二处理模块,用于将小文件存储到数据文件中,并将小文件对应的索引块信息存储到第二记录区中,索引块信息中包括:索引块号、小文件在数据文件中的起始偏移位置和小文件的大小。8.根据权利要求7所述的装置,其特征在于, 所述第一处理模块确定文件句柄队列中包括的文件句柄数是否已经达到预定阈值;如果否,则创建一个新的文件句柄,其中的数据文件和索引文件的第二记录区中均为空,并将新创建的文件句柄分配给小文件;如果是,则将位于文件句柄队列最前面的文件句柄分配给小文件; 所述第二处理模块进一步用于,当小文件及其对应的索引块信息均已存储完成时,将为小文件分配的文件句柄放入到文件句柄队列的末尾。9.根据权利要求8所述的装置,其特征在于, 所述第二处理模块进一步用于,如果为小文件分配的文件句柄的数据文件中的剩余存储空间小于小文件的大小或者发生存储异常,则将为小文件分配的文件句柄关闭,并从文件句柄队列中移除,并创建一个新的文件句柄,将新创建的文件句柄分配给小文件。10.根据权利要求7、8或9所述的装置,其特征在于, 第一记录区位于第二记录区的前面,且大小固定;第二记录区中按照索引块号由小到大的顺序依次存储有各索引块信息,且每个索引块信息的大小固定; 所述第二处理模块从数据文件中已存储的数据结束位置开始,存储小文件; 小文件对应的索引块号等同于小文件在数据文件中的存储顺序号。11.根据权利要求10所述的装置,其特征在于, 所述第二处理模块进一步用于,当小文件及其对应的索引块信息均已存储完成时,将小文件对应的索引文件的存储路径信息和索引块号返回给存储请求的发送方。12.根据权利要求11所述的装置,其特征在于, 该装置中进一步包括:第三处理模块; 所述第三处理模块,用于当接收到针对任一小文件的读取请求时,获取其中携带的索引文件的存储路径信息和索引块号;根据获取到的索引文件的存储路径信息,找到相应的索引文件,并读取出存储在找到的索引文件的第一记录区中的数据文件的存储路径信息,根据读取出的数据文件的存储路径信息找到对应的数据文件;计算(获取到的索引块号-1)*每个索引块信息的大小,得到获取到的索引块号对应的索引块信息在找到的索引文件的第二记录区中的起始偏移位置,并根据得到的起始偏移位置和每个索引块信息的大小,从第二记录区中读取出获取到的索引块号对应的索引块信息;根据读取出的索引块信息中的小文件在数据文件中的起始偏移位置和小文件的大小,从找到的数据文件中读取出小文件,并返回给读取请求的发送方。
【专利摘要】本发明公开了一种基于HDFS的小文件存储方法和装置:当接收到针对任一小文件的存储请求时,为小文件分配一个文件句柄,该文件句柄由一个索引文件和一个数据文件组成,其中,索引文件中包括一个第一记录区和一个第二记录区,第一记录区中存储有数据文件的存储路径信息;将小文件存储到数据文件中,并将小文件对应的索引块信息存储到第二记录区中,索引块信息中包括:索引块号、小文件在数据文件中的起始偏移位置和小文件的大小。应用本发明所述方案,能够较好的节省内存空间。
【IPC分类】G06F17/30
【公开号】CN105630779
【申请号】CN201410581517
【发明人】黄学军, 王宇, 胡景翔
【申请人】杭州海康威视系统技术有限公司
【公开日】2016年6月1日
【申请日】2014年10月27日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1