一种海量小文件存储及管理方法和系统的制作方法

文档序号:8498725阅读:460来源:国知局
一种海量小文件存储及管理方法和系统的制作方法
【技术领域】
[0001]本发明涉及一种存储和管理的方法和系统,具体涉及一种海量小文件存储及管理方法和系统。
【背景技术】
[0002]Hadoop平台采用管理者/工作者模式,由一个名称节点(NameNode)服务器和多个数据节点(DataNode)服务器组成。不论是NameNode服务器还是DataNode服务器都部署在普通的PC机上,大大节约了实施分布式系统投入的成本。在Hadoop中需要用NameNode来管理文件系统的元数据,以响应客户端请求返回文件位置等,因此文件数量大小的限制要由NameNode来决定。假设一个小型数据文件,其元数据所需IKB (1024B)内存空间。如果存在1000万个这样的文件,并且为每一个文件分配一个Block,那么就要消耗NameNode节点约为1GB的内存来保存这些Block的信息;如果每个Block的默认大小为64MB,并且默认备份数量为3,则这1000万个文件所需要的存储空间约为1.92PB(1920TB)。显然,仅仅存储1000万个小文件是不足以满足用户的需求,因为现如今的信息量在急剧的增加,这样很容易超出现阶段计算机硬件所能承受的极限,造成机器宕机。如果有更多文件,那么名称节点的工作压力更大,检索处理元数据所需要的时间就不可接受。特别是这些文件比Hadoop默认文件分块大小还小,Hadoop将认为这些文件是不可分块。海量小文件将耗费名称节点服务器的内存,并且其检索和更新效率低。另外,Hadoop存在的这个唯一的名称节点,它负责管理文件系统名称空间和控制外部客户端的访问,一旦NameNode出现故障就会导致数据访问失效。

【发明内容】

[0003]为了克服上述现有技术的不足,本发明提供一种海量小文件存储及管理方法和系统。
[0004]为了实现上述发明目的,本发明采取如下技术方案:
[0005]一种海量小文件存储及管理方法,所述方法包括:
[0006]存储海量小文件,并将元数据写入名称节点服务网络;
[0007]名称节点服务网络管理元数据,实现对客户端访问请求响应。
[0008]优选的,所述存储海量小文件包括如下步骤:
[0009]步骤1、将海量小文件进行分类,生成所述元数据文件;
[0010]步骤2、利用MapReduce编程框架对数据块进行分解、处理得到数据值;
[0011]步骤3、将所述数据值分布存储在Hadoop平台中。
[0012]优选的,所述步骤I包括如下步骤:
[0013]步骤1-1、根据查询文件的文件类型,分类出目标类型文件,并将所述目标类型文件索引进行分类,形成目标文件索引序列;
[0014]步骤1-2、对目标文件进行解析,提取出需要存储的小文件元数据信息并存入缓存;
[0015]步骤1-3、从缓存中获取所述小文件元数据信息,将其按照Hadoop平台中默认的块大小或指定大小进行文件合并,形成中间数据文件,即元数据文件,放入目标文件夹中。
[0016]优选的,所述步骤2采用MapReduce编程框架的Map、Reduce函数,所述Map函数对传入的中间数据文件进行分解处理,产生中间key/value数据序列,所述Reduce函数对所述中间key/value数据序列进行分析合并。
[0017]优选的,所述名称节点服务网络管理元数据包括如下步骤:
[0018]步骤1、获取客户端提交的服务请求;
[0019]步骤I1、根据所述服务请求的key值,查找缓存中是否有所述服务请求的数据信息,若有直接返回给客户端,否则定位所述服务请求到网络中的具体存储节点,并转发所述服务请求到具体NameNode节点;
[0020]步骤II1、KBR服务根据所述key值定位查询所述具体存储节点中文件节点信息并返回客户端。
[0021]优选的,所述key值是根据服务请求信息提取的数据进行Hash计算得到的。
[0022]优选的,所述KBR服务采用了希尔伯特曲线的数据连续性,提供基于关键字的路由方法供其他NameNode节点查找。
[0023]优选的,一种海量小文件存储及管理系统,所述系统包括
[0024]名称节点服务网络系统,用于名称节点服务网络管理元数据,实现对客户端访问请求响应;
[0025]海量小文件存储系统,用于存储海量小文件,并将元数据写入名称节点服务网络。
[0026]优选的,所述海量小文件存储系统包括:
[0027]文件类型处理器,根据查询文件的文件类型,分类出目标类型文件,并将目标文件索引进行分类,形成目标文件索引序列,供海量小文件解析器模块调用;
[0028]海量小文件解析器模块,从文件类型处理器获得目标文件索引序列,使用多线程解析技术,对目标文件进行解析,提取出需要存储的小文件元数据信息,将提取的元数据存入缓存;
[0029]中间数据合并器,将所述元数据按照Hadoop平台中的默认块大小或指定大小进行文件合并,放入指定的目标文件夹中;
[0030]中间数据存储器,定时的扫描目标文件夹,获得中间数据文件,将其放入Hadoop平台中,并对所述中间数据文件进行备份;
[0031]分布式数据处理器,采用MapReduce编程模型的Map、Reduce函数;Map函数是按照规定的规则,对传入的中间数据文件进行分解处理,产生中间key/value数据序列,然后Reduce函数对这些中间key/value数据序列进行在分析、合并,最后将处理过的数据存入Hadoop平台中。
[0032]优选的,所述名称节点服务网络系统包括:
[0033]解析器模块,提取客户端提交服务请求的key值;
[0034]缓存层模块,对经常用的数据进行缓存;
[0035]覆盖网络层,定位所述服务请求到网络中的具体存储节点,并转发所述服务请求到具体NameNode节点,根据所述key值定位查询所述具体存储节点中文件节点信息并返回客户端。
[0036]与现有技术相比,本发明的有益效果在于:
[0037]本发明名称节点服务网络系统采用对等计算技术,避免了单点失效问题,提供基于关键字的路由查找方法,有效均衡网络负载,提高查询效率,采用同类型小文件合并技术,并使用多线程并行处理编程方法,提高大数据系统的小文件处理效率。
【附图说明】
[0038]图1是一种存储海量小文件方法流程图
[0039]图2是一种名称节点服务网络管理元数据的方法流程图
[0040]图3是一种存储海量小文件系统模块图
[0041]图4是一种名称节点服务网络管理元数据系统模块图
【具体实施方式】
[0042]下面结合附图对本发明作进一步详细说明。
[0043]一种海量小文件存储及管理方法,所述方法包括:
[0044]存储海量小文件,并将元数据写入名称节点服务网络;
[0045]名称节点服务网络管理元数据,实现对客户端访问请求响应。
[0046]如图1所示,一种存储海量小文件方法,包括如下步骤:
[0047]步骤101、将海量的小文件进行分类,生成所述元数据文件;
[0048]步骤102、再利用MapReduce编程框架对数据块进行分解、处理得到数据值;
[0049]采用MapReduce编程框架的Map、Reduce函数,所述Map函数对传入的中间数据文件进行分解处理,产生中间key/value数据序列,所述Reduce函数对所述中间key/value数据序列进行分析合并。
[0050]步骤103、最后将所述数据值分布存储在Hadoop平台中。
[0051]其中步骤101包括如下步骤:
[0052]步骤1101、根据查询文件的文件类型,分类出目标类型文件,并将所述目标类型文件索引进行分类,形成目标文件索引序列;
[0053]步骤1102、对目标文件进行解析,提取出需要存储的小文件元数据信息并存入缓存;
[0054]步骤1103、从缓存中获取所述小文件元数据信息,将其按照Hadoop平台中默认的块大小或指定大小进行文件合并,形成中间数据文件,即元数据文件,放入目标文件夹中。
[0055]为了解决名称节点的单点失效问题,本发明提出一种基于对等计算(P2P)技术的名称节点服务网络系统,简称P2PNS。P2P是英文Peer-to-Peer的缩写,Peer的英文含义是“(地位、能力等)同等者、同事、伙伴”,P2P也就可以理解为“伙伴对伙伴”的意思。每个节点地位对等,可以同时成为服务的使用者和提供者,这为大规模的信息共享、直接通信和协同工作提供了灵活的、可扩展的计算平台。P2P计算更关注于Internet上海量的边缘节点;P2P技术的价值也在于为对等节点间的资源
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1