一种分布式数据存取方法、装置和系统的制作方法

文档序号:6502490阅读:130来源:国知局
一种分布式数据存取方法、装置和系统的制作方法
【专利摘要】本发明公开了一种分布式数据存取方法、装置和系统,其中,分布式数据存储方法包括:小文件处理模块接收客户端上传的文件;当判定所述文件的数据量小于预设的数据量门限时,将所述文件保存在本地系统;当本地系统存储的各文件的数据量之和达到预设的合并门限时,将各文件进行合并,并将合并后的大文件发给Hadoop分布式文件系统HDFS。本发明能够在大量存储小文件时,节省占用主节点的内存,提高HDFS存取数据的效率。
【专利说明】一种分布式数据存取方法、装置和系统

【技术领域】
[0001] 本发明涉及数据存取技术,尤其涉及一种分布式数据存取方法、装置和系统。

【背景技术】
[0002] 在当前的分布式存储体系中,一般采用Hadoop作为存储技术,所述Hadoop是一种 开源的分布式系统基础架构。Hadoop分布式文件系统(Hadoop Distributed File System, HDFS)中存储的每个文件需要与一个块(Block)对应,HDFS中的主节点(NameNode)需要为 每个文件和其对应的块建立缓存映射。HDFS中存储的文件数量越多,需要建立的缓存映射 就越多,占用的主节点的内存越多。
[0003] 由此,HDFS只适合存储大文件(例如数据量大于64M的文件),当HDFS存储大量 小文件(例如数据量小于64M的文件),如图片、文档等仅有几 Μ甚至几十K的小文件时,需 要建立大量的缓存映射,由此会极大的占用主节点的内存,导致HDFS存取数据的效率大大 降低。


【发明内容】

[0004] 有鉴于此,本发明的主要目的在于提供一种分布式数据存取方法、装置和系统,能 够在大量存储小文件时,节省占用主节点的内存,提高HDFS存取数据的效率。
[0005] 为达到上述目的,本发明的技术方案是这样实现的:
[0006] 本发明提供的一种分布式数据存储方法,所述方法包括:
[0007] 小文件处理模块接收客户端上传的文件;
[0008] 当判定所述文件的数据量小于预设的数据量门限时,将所述文件保存在本地系 统;
[0009] 当本地系统存储的各文件的数据量之和达到预设的合并门限时,将各文件进行合 并,并将合并后的大文件发给Hadoop分布式文件系统HDFS。
[0010] 较佳地,所述将所述文件保存在本地系统之后,所述方法还包括:
[0011] 记录所述文件的数据量。
[0012] 较佳地,将各文件进行合并之后,所述方法还包括:
[0013] 记录各文件在合并后的大文件中的位置。
[0014] 较佳地,所述将合并后的大文件发给HDFS之后,所述方法还包括:
[0015] 将本地系统中已经进行合并的各文件删除,并将被删除文件对应的状态标识标记 为已合并。
[0016] 本发明提供的一种分布式数据读取方法,所述方法包括:
[0017] 小文件处理模块根据客户端发来的文件读取请求,判断所述文件的数据量是否小 于预设的数据量门限;
[0018] 当所述文件的数据量小于预设的数据量门限时,判断所述文件是否被合并;
[0019] 当所述文件未被合并,从本地系统中读取所述文件;
[0020] 当所述文件被合并,从Hadoop分布式文件系统HDFS中读取所述文件。
[0021] 较佳地,所述判断所述文件的数据量是否小于预设的数据量门限为:
[0022] 根据数据量记录信息,判断所述文件的数据量是否小于预设的数据量门限。
[0023] 较佳地,所述从Hadoop分布式文件系统HDFS中读取所述文件为:
[0024] 从HDFS中读取包含所述文件的大文件,根据位置记录信息从大文件中读取所述 文件;
[0025] 较佳地,所述判断所述文件是否被合并为,
[0026] 根据所述文件对应的状态标识判断所述文件是否被合并,当所述状态标识为未合 并表示所述文件未被合并;当所述状态标识为已合并表示所述文件被合并。
[0027] 本发明提供的一种小文件处理模块,所述模块包括:
[0028] 文件接收单元,用于接收客户端上传的文件;
[0029] 文件存储单元,用于当判定所述文件的数据量小于预设的数据量门限时,将所述 文件保存在本地系统;当本地系统存储的各文件的数据量之和达到预设的合并门限时,将 各文件进行合并,并将合并后的大文件发给Hadoop分布式文件系统HDFS。
[0030] 本发明提供的一种小文件处理模块,所述模块包括:
[0031] 数据量判断单元,用于根据客户端发来的文件读取请求,判断所述文件的数据量 是否小于预设的数据量门限;
[0032] 状态判断单元,用于当所述文件的数据量小于预设的数据量门限时,判断所述文 件是否被合并;
[0033] 文件读取单元,当所述文件未被合并,从本地系统中读取所述文件;
[0034] 当所述文件被合并,从Hadoop分布式文件系统HDFS中读取所述文件。
[0035] 本发明提供的一种分布式数据存取系统,所述系统包括:
[0036] 小文件处理模块,用于接收客户端上传的文件;当判定所述文件的数据量小于预 设的数据量门限时,将所述文件保存在本地系统;当本地系统存储的各文件的数据量之和 达到预设的合并门限时,将各文件进行合并,并将合并后的大文件发给Hadoop分布式文件 系统HDFS ;
[0037] 本地系统,用于保存数据量小于预设的数据量门限的文件;
[0038] HDFS,用于保存合并后的大文件。
[0039] 本发明提供的一种分布式数据存取系统,所述读取包括:
[0040] 小文件处理模块,用于根据客户端发来的文件读取请求,判断所述文件的数据量 是否小于预设的数据量门限;当所述文件的数据量小于预设的数据量门限时,判断所述文 件是否被合并;当所述文件未被合并,从本地系统中读取所述文件;当所述文件被合并,从 Hadoop分布式文件系统HDFS中读取所述文件;
[0041] 本地系统,用于保存数据量小于预设的数据量门限的文件;
[0042] HDFS,用于保存合并后的大文件。
[0043] 由上可知,本发明的技术方案包括:小文件处理模块接收客户端上传的文件;当 判定所述文件的数据量小于预设的数据量门限时,将所述文件保存在本地系统;当本地系 统存储的各文件的数据量之和达到预设的合并门限时,将各文件进行合并,并将合并后的 大文件发给HDFS。由此,通过将小文件保存在本地系统,将合并后的大文件发给HDFS保存, 可以减少缓存映射的建立数量,从而能够在大量存储小文件时,节省占用主节点的内存,提 高HDFS存取数据的效率。

【专利附图】

【附图说明】
[0044] 图1为本发明分布式数据存储方法的实现流程示意图;
[0045] 图2为本发明分布式数据读取方法的实现流程示意图;
[0046] 图3为本发明提供的一种小文件处理模块的结构示意图;
[0047] 图4为本发明提供的另一种小文件处理模块的结构示意图;
[0048] 图5为本发明分布式数据存取系统的结构示意图;
[0049] 图6为本发明分布式数据存储方法的第一实施例的实现流程示意图;
[0050] 图7为本发明分布式数据读取方法的第一实施例的实现流程示意图。

【具体实施方式】
[0051] 本发明提供的一种分布式数据存储方法,如图1所示,所述方法包括:
[0052] 步骤101、小文件处理模块接收客户端上传的文件;
[0053] 这里,所述小文件处理模块是在客户端和HDFS之间增加的一个装置,所述小文件 处理模块可以异步处理小文件合并。
[0054] 步骤102、当判定所述文件的数据量小于预设的数据量门限时,将所述文件保存在 本地系统;
[0055] 这里,所述数据量门限可以是64M,也可以根据实际情况设置。
[0056] 所述本地系统是指HDFS之外的存储空间。
[0057] 步骤103、当本地系统存储的各文件的数据量之和达到预设的合并门限时,将各文 件进行合并,并将合并后的大文件发给HDFS。
[0058] 这里,所述合并门限可以是64M,也可以根据实际情况设置。
[0059] 优选的,所述将所述文件保存在本地系统之后,所述方法还可以包括:
[0060] 记录所述文件的数据量。
[0061] 这里,数据量记录信息可以保存在数据库中。
[0062] 优选的,将各文件进行合并之后,所述方法还可以包括:
[0063] 记录各文件在合并后的大文件中的位置。
[0064] 这里,所述位置记录信息可以保存在数据库中。
[0065] 优选的,所述将合并后的大文件发给HDFS之后,所述方法还可以包括:
[0066] 将本地系统中已经进行合并的各文件删除,并将被删除文件对应的状态标识标记 为已合并。
[0067] 这里,文件的状态标识可以保存在数据库中。
[0068] 本发明提供的一种分布式数据读取方法,如图2所示,所述方法包括:
[0069] 步骤201、小文件处理模块根据客户端发来的文件读取请求,判断所述文件的数据 量是否小于预设的数据量门限;
[0070] 步骤202、当所述文件的数据量小于预设的数据量门限时,判断所述文件是否被合 并;
[0071] 步骤203、当所述文件未被合并,从本地系统中读取所述文件;
[0072] 步骤204、当所述文件被合并,从HDFS中读取所述文件。
[0073] 优选的,所述判断所述文件的数据量是否小于预设的数据量门限可以为:
[0074] 根据数据量记录信息,判断所述文件的数据量是否小于预设的数据量门限。
[0075] 优选的,所述从HDFS中读取所述文件可以为:
[0076] 从HDFS中读取包含所述文件的大文件,根据位置记录信息从大文件中读取所述 文件;
[0077] 优选的,所述判断所述文件是否被合并可以为,
[0078] 根据所述文件对应的状态标识判断所述文件是否被合并,当所述状态标识为未合 并表示所述文件未被合并;当所述状态标识为已合并表示所述文件被合并。
[0079] 本发明提供的一种小文件处理模块,如图3所示,所述模块包括:
[0080] 文件接收单元,用于接收客户端上传的文件;
[0081] 文件存储单元,用于当判定所述文件的数据量小于预设的数据量门限时,将所述 文件保存在本地系统;当本地系统存储的各文件的数据量之和达到预设的合并门限时,将 各文件进行合并,并将合并后的大文件发给HDFS。
[0082] 本发明提供的一种小文件处理模块,如图4所示,所述模块包括:
[0083] 数据量判断单元,用于根据客户端发来的文件读取请求,判断所述文件的数据量 是否小于预设的数据量门限;
[0084] 状态判断单元,用于当所述文件的数据量小于预设的数据量门限时,判断所述文 件是否被合并;
[0085] 文件读取单元,当所述文件未被合并,从本地系统中读取所述文件;
[0086] 当所述文件被合并,从HDFS中读取所述文件。
[0087] 本发明提供的一种分布式数据存取系统,如图5所示,所述系统包括:
[0088] 小文件处理模块,用于接收客户端上传的文件;当判定所述文件的数据量小于预 设的数据量门限时,将所述文件保存在本地系统;当本地系统存储的各文件的数据量之和 达到预设的合并门限时,将各文件进行合并,并将合并后的大文件发给HDFS;
[0089] 本地系统,用于保存数据量小于预设的数据量门限的文件;
[0090] HDFS,用于保存合并后的大文件。
[0091] 本发明提供的一种分布式数据存取系统,如图5所示,所述读取包括:
[0092] 小文件处理模块,用于根据客户端发来的文件读取请求,判断所述文件的数据量 是否小于预设的数据量门限;当所述文件的数据量小于预设的数据量门限时,判断所述文 件是否被合并;当所述文件未被合并,从本地系统中读取所述文件;当所述文件被合并,从 HDFS中读取所述文件;
[0093] 本地系统,用于保存数据量小于预设的数据量门限的文件;
[0094] HDFS,用于保存合并后的大文件。
[0095] 下面结合图6对本发明提供的一种分布式数据存储方法的第一实施例进行介绍。
[0096] 步骤601、小文件处理模块接收客户端上传的文件;
[0097] 步骤602、判断所述文件的数据量是否小于预设的数据量门限,当所述文件的数据 量小于预设的数据量门限时,进入步骤603;当所述文件的数据量大于等于预设的数据量 门限时,进入步骤606 ;
[0098] 步骤603、将所述文件保存在本地系统;
[0099] 这里,还需要在数据库中记录所述文件的数据量。
[0100] 步骤604、当本地系统存储的各文件的数据量之和达到预设的合并门限时,将各文 件进行合并,并将合并后的大文件发给HDFS ;
[0101] 这里,还需要在数据库中记录各文件在合并后的大文件中的位置。
[0102] 步骤605、将本地系统中已经进行合并的各文件删除,并将被删除文件对应的状态 标识标记为已合并,结束本次流程。
[0103] 步骤606、将所述文件发给HDFS,结束本次流程。
[0104] 上述步骤604和步骤605可以采用异步机制实现。
[0105] 下面结合图7对本发明提供的一种分布式数据读取方法的第一实施例进行介绍。
[0106] 步骤701、小文件处理模块根据客户端发来的文件读取请求;
[0107] 步骤702、判断所述文件的数据量是否小于预设的数据量门限,当所述文件的数据 量小于预设的数据量门限时,进入步骤703;当所述文件的数据量大于等于预设的数据量 门限时,进入步骤706;
[0108] 这里,可以根据数据库中保存的数据量记录信息,判断所述文件的数据量是否小 于预设的数据量门限。
[0109] 步骤703、判断所述文件是否被合并,当所述文件未被合并,进入步骤704 ;当所述 文件被合并,进入步骤705 ;
[0110] 这里,可以根据数据库中保存的所述文件对应的状态标识判断所述文件是否被合 并,当所述状态标识为未合并表示所述文件未被合并;当所述状态标识为已合并表示所述 文件被合并。
[0111] 步骤704、从本地系统中读取所述文件,结束本次流程;
[0112] 步骤705、从HDFS中读取包含所述文件的大文件,根据数据库中保存的位置记录 信息从大文件中读取所述文件,结束本次流程;
[0113] 步骤706、从HDFS中读取所述文件,结束本次流程。
[0114] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
【权利要求】
1. 一种分布式数据存储方法,其特征在于,所述方法包括: 小文件处理模块接收客户端上传的文件; 当判定所述文件的数据量小于预设的数据量门限时,将所述文件保存在本地系统; 当本地系统存储的各文件的数据量之和达到预设的合并门限时,将各文件进行合并, 并将合并后的大文件发给Hadoop分布式文件系统HDFS。
2. 根据权利要求1所述的方法,其特征在于,所述将所述文件保存在本地系统之后,所 述方法还包括: 记录所述文件的数据量。
3. 根据权利要求1所述的方法,其特征在于,将各文件进行合并之后,所述方法还包 括: 记录各文件在合并后的大文件中的位置。
4. 根据权利要求1所述的方法,其特征在于,所述将合并后的大文件发给HDFS之后,所 述方法还包括: 将本地系统中已经进行合并的各文件删除,并将被删除文件对应的状态标识标记为已 合并。
5. -种分布式数据读取方法,其特征在于,所述方法包括: 小文件处理模块根据客户端发来的文件读取请求,判断所述文件的数据量是否小于预 设的数据量门限; 当所述文件的数据量小于预设的数据量门限时,判断所述文件是否被合并; 当所述文件未被合并,从本地系统中读取所述文件; 当所述文件被合并,从Hadoop分布式文件系统HDFS中读取所述文件。
6. 根据权利要求5所述的方法,其特征在于,所述判断所述文件的数据量是否小于预 设的数据量门限为: 根据数据量记录信息,判断所述文件的数据量是否小于预设的数据量门限。
7. 根据权利要求5所述的方法,其特征在于,所述从Hadoop分布式文件系统HDFS中读 取所述文件为: 从HDFS中读取包含所述文件的大文件,根据位置记录信息从大文件中读取所述文件。
8. 根据权利要求5所述的方法,其特征在于,所述判断所述文件是否被合并为, 根据所述文件对应的状态标识判断所述文件是否被合并,当所述状态标识为未合并表 示所述文件未被合并;当所述状态标识为已合并表示所述文件被合并。
9. 一种小文件处理模块,其特征在于,所述模块包括: 文件接收单元,用于接收客户端上传的文件; 文件存储单元,用于当判定所述文件的数据量小于预设的数据量门限时,将所述文件 保存在本地系统;当本地系统存储的各文件的数据量之和达到预设的合并门限时,将各文 件进行合并,并将合并后的大文件发给Hadoop分布式文件系统HDFS。
10. -种小文件处理模块,其特征在于,所述模块包括: 数据量判断单元,用于根据客户端发来的文件读取请求,判断所述文件的数据量是否 小于预设的数据量门限; 状态判断单元,用于当所述文件的数据量小于预设的数据量门限时,判断所述文件是 否被合并; 文件读取单元,当所述文件未被合并,从本地系统中读取所述文件; 当所述文件被合并,从Hadoop分布式文件系统HDFS中读取所述文件。
11. 一种分布式数据存取系统,其特征在于,所述系统包括: 小文件处理模块,用于接收客户端上传的文件;当判定所述文件的数据量小于预设的 数据量门限时,将所述文件保存在本地系统;当本地系统存储的各文件的数据量之和达到 预设的合并门限时,将各文件进行合并,并将合并后的大文件发给Hadoop分布式文件系统 HDFS ; 本地系统,用于保存数据量小于预设的数据量门限的文件; HDFS,用于保存合并后的大文件。
12. -种分布式数据存取系统,其特征在于,所述读取包括: 小文件处理模块,用于根据客户端发来的文件读取请求,判断所述文件的数据量是否 小于预设的数据量门限;当所述文件的数据量小于预设的数据量门限时,判断所述文件 是否被合并;当所述文件未被合并,从本地系统中读取所述文件;当所述文件被合并,从 Hadoop分布式文件系统HDFS中读取所述文件; 本地系统,用于保存数据量小于预设的数据量门限的文件; HDFS,用于保存合并后的大文件。
【文档编号】G06F17/30GK104142937SQ201310164831
【公开日】2014年11月12日 申请日期:2013年5月7日 优先权日:2013年5月7日
【发明者】陈昌 申请人:深圳中兴网信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1