CN105912675A - 一种针对小文件合并的批量删除/查询方法与装置 - Google Patents

一种针对小文件合并的批量删除/查询方法与装置 Download PDF

Info

Publication number
CN105912675A
CN105912675A CN201610228082.4A CN201610228082A CN105912675A CN 105912675 A CN105912675 A CN 105912675A CN 201610228082 A CN201610228082 A CN 201610228082A CN 105912675 A CN105912675 A CN 105912675A
Authority
CN
China
Prior art keywords
file
small documents
key
memcache
list
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610228082.4A
Other languages
English (en)
Other versions
CN105912675B (zh
Inventor
邝倍靖
孙毓忠
张笛
宋�莹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Zhongke Flux Technology Co ltd
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN201610228082.4A priority Critical patent/CN105912675B/zh
Publication of CN105912675A publication Critical patent/CN105912675A/zh
Application granted granted Critical
Publication of CN105912675B publication Critical patent/CN105912675B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出一种针对小文件合并的批量删除/查询方法与装置,该方法包括客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;在所述目标文件中添加标志文件flag,以及标志文件DE_flag,所述客户端收到删除所述小文件的请求后,先从所述表key_list中查找是否存在所述小文件的所述key,若存在,则从所述Memcache中取出并删除所述小文件,并删除所述表key_list中所述小文件的所述key,否则在所述标识文件flag中记录所述小文件的文件名;获取需要查询的文件F,查询所述表key_list上记录的所述文件F的key,根据所述key从所述Memcache中取出所述文件F。

Description

一种针对小文件合并的批量删除/查询方法与装置
技术领域
本发明涉及文件处理领域问题,特别涉及一种针对小文件合并的批量删除/查询方法与装置。
背景技术
目前,随着信息化的发展,各个领域的数据均呈爆炸式增加,这些数据以文件的形式存储,由于各方面原因,大部分都是小文件,小文件是指文件大小比较小的文件,由于数量巨大,难以管理。
HDFS上的文件是以块为单位存储的,当HDFS上存在大量的小文件时,不仅占用DataNode大量的存储空间,在NameNode内存中也产生大量的元数据,Yahoo内部有一个生产集群,统计下来大概有57,000,000个小于一个块大小的小文件,这些小文件消耗了95%的NameSpace,占用了30%的存储空间,也给NameNode带来了压力。
目前有几种处理小文件的方法:
Hadoop自带了几种处理小文件的方法,比如HAR,SequenceFile等,HAR是一个文件存档工具,能够将多个小文件打包成一个HAR文件,再放入HDFS中,也可以通过MapReduce进行操作,打包后的文件包含文件部分以及索引部分,其中索引为二层索引,完成了小文件与目标文件之间的映射,但这种方法有一个不足——创建好的HAR文件不能修改,即不能从目标文件中删除小文件,也不能将小文件追加到合并好的目标文件中,只能重新创建新HAR文件,SequenceFile由一系列的二进制key/value组成,如果key为小文件名,value为文件内容,则可以将大批小文件合并成一个目标文件,SequenceFile是Hadoop一个重要的文本存储文件,能够将小文件合并成目标文件后统一进行存储,在MapReduce中有重要应用。
除了使用Hadoop自带的方法,还有很多其他方案:
采用先合并,再上传的策略。发明专利“一种小文件处理方法及装置”提出一种小文件存储系统,该专利所述方法能够将具有相同文件标志的小文件合并在一起,将小文件预先合并好,放在内存区中,再一同存到硬盘上,这篇专利能够将有关联的小文件整合,由于在合并和查询时都使用了内存暂时存放文件块,提高合并以及检索效率。相对于每篇文章分别作为一个对象的方法而言,无须浪费太多硬盘空间存储非文件数据,这篇专利是先将一段时间收集的小文件进行合并,再上传到磁盘或服务器上。虽然这个方法将文件合并来存储和处理小文件,然而都不能修改合并后的目标文件,包括追加和删除。
发明内容
针对现有技术的不足,本发明提出一种针对小文件合并的批量删除/查询方法与装置。
本发明提出一种针对小文件合并的批量删除/查询方法,包括:
将小文件上传到Memcache步骤,客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;
小文件删除步骤,在所述目标文件中添加标志文件flag,以及标志文件DE_flag,所述客户端收到删除所述小文件的请求后,先从所述表key_list中查找是否存在所述小文件的所述key,若存在,则从所述Memcache中取出并删除所述小文件,并删除所述表key_list中所述小文件的所述key,否则在所述标识文件flag中记录所述小文件的文件名;
小文件查询步骤,获取需要查询的文件F,查询所述表key_list上记录的所述文件F的key,根据所述key从所述Memcache中取出所述文件F,返回给所述客户端。
所述将小文件上传到Memcache步骤包括预测所述Memcache中是否存在足够的空间容纳所述小文件其中所述Memcache中剩余空间为Li,所述小文件大小为Si,所述Memcache总空间为P,若Li+Si<=P,则将所述小文件放入所述Memcache中,若Li+fi>P,则将所述小文件存储到磁盘上,不再有新的小文件上传后,再将磁盘上的小文件上传到所述Memcache中;将线程进行加锁,保证同时只有一个线程执行写所述表key_list;从所述Memcache上下载所述表key_list;将所述小文件的文件名以及所述目标文件的文件名追加到key_list文件后;将所述表key_list上传到所述Memcache,将线程进行解锁。
所述小文件删除步骤,还包括
根据所述小文件的文件名查找要删除的小文件所在的目标文件的位置;
在与所述目标文件相对于的标志文件flag上记录信息,所述信息为要删除的小文件的文件名;
设置一阈值V,定期遍历每一个合并后的目标文件下的标志文件flag与_index文件,并读取这两个文件的行数c1与c2,当c1/c2<V时,不做任何操作,当c1/c2>=V时,则另外起用一个线程,对目标文件进行重新合并,重新合并步骤为:
在目标文件所在文件夹下新建标志文件DE_flag,把合并后的目标文件恢复成小文件,并下载到本地,把标志文件flag也下载到本地,并清空所述标志文件flag;
读取本地的标志文件flag,按行获取信息,每一行为一个要删除的文件,从本地的小文件中找到要删除的文件并删除;
把删除完成后剩余的小文件上传到HDFS,并利用hadoop archive的方法进行重新合并;
把HDFS上原有的标志文件flag复制到新合并的目标文件中,并用新合并的目标文件替换旧的目标文件。
所述小文件查询步骤包括,步骤21,获取需要访问所述文件F,首先查询所述表key_list上是否记录了所述文件F的key,如果记录了所述文件F,则根据所述key从所述Memcache中取出所述文件F,返回给所述客户端,否则执行步骤22;
步骤22,查询所述表key_process,如果记录了key,则从所述Memcache中用key取出所述文件F,否则执行步骤23;
步骤23,根据所述文件F,查询所述文件F对应的目标文件的位置;
步骤24,查询目标文件中的标志文件flag中是否记录目标文件的文件名,如果有,则返回客户端目标文件不存在,否则执行步骤25;
步骤25,从该目标文件中的_masterindex与_index中查询所述文件F,并返回给客户端。
本发明还提出一种针对小文件合并的批量删除/查询装置,包括:
将小文件上传到Memcache模块,用于客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;
小文件删除模块,用于在所述目标文件中添加标志文件flag,以及标志文件DE_flag,所述客户端收到删除所述小文件的请求后,先从所述表key_list中查询是否存在所述小文件的所述key,若存在,则从所述Memcache中取出并删除所述小文件,并删除所述表key_list中所述小文件的所述key,否则在所述标识文件flag中记录所述小文件的文件名
小文件查询模块,用于获取需要查询的文件F,查询所述表key_list上记录的所述文件F的key,根据所述key从所述Memcache中取出所述文件F,返回给所述客户端。
所述将小文件上传到Memcache模块包括预测所述Memcache中是否存在足够的空间容纳所述小文件其中所述Memcache中剩余空间为Li,所述小文件大小为Si,所述Memcache总空间为P,若Li+Si<=P,则将所述小文件放入所述Memcache中,若Li+fi>P,则将所述小文件存储到磁盘上,不再有新的小文件上传后,再将磁盘上的小文件上传到所述Memcache中;将线程进行加锁,保证同时只有一个线程执行写所述表key_list;从所述Memcache上下载所述表key_list;将所述小文件的文件名以及所述目标文件的文件名追加到key_list文件后;将所述表key_list上传到所述Memcache,将线程进行解锁。
所述小文件删除模块,还包括
根据所述小文件的文件名查询要删除的小文件所在的目标文件的位置;
在与所述目标文件相对于的标志文件flag上记录信息,所述信息为要删除的小文件的文件名;
设置一阈值V,定期遍历每一个合并后的目标文件下的标志文件flag与_index文件,并读取这两个文件的行数c1与c2,当c1/c2<V时,不做任何操作,当c1/c2>=V时,则另外起用一个线程,对目标文件进行重新合并,重新合并步骤为:
在目标文件所在文件夹下新建标志文件DE_flag,把合并后的目标文件恢复成小文件,并下载到本地,把标志文件flag也下载到本地,并清空所述标志文件flag;
读取本地的标志文件flag,按行获取信息,每一行为一个要删除的文件,从本地的小文件中找到要删除的文件并删除;
把删除完成后剩余的小文件上传到HDFS,并利用hadoop archive的方法进行重新合并;
把HDFS上原有的标志文件flag复制到新合并的目标文件中,并用新合并的目标文件替换旧的目标文件。
还包括小文件查询模块用于执行以下步骤:步骤21,获取需要访问文件F,首先查询所述表key_list上是否记录了所述文件F的key,如果记录了所述文件F,则根据所述key从所述Memcache中取出所述文件F,返回给所述客户端,否则执行步骤22;
步骤22,查询所述表key_process,如果记录了key,则从所述Memcache中用key取出所述文件F,否则执行步骤23;
步骤23,根据所述文件F,查询所述文件F对应的目标文件的位置;
步骤24,查询目标文件中的标志文件flag中是否记录目标文件的文件名,如果有,则返回客户端目标文件不存在,否则执行步骤25;
步骤25,从目标文件中的_masterindex与_index中查询所述文件F,并返回给客户端。
由以上方案可知,本发明的优点在于:
本发明能够对系统中目标文件的内容进行动态调整,满足用户的需要。对于小文件的存储和管理具有重要的作用,具有良好的前景和应用价值。
附图说明
图1是追加文件缓存Memcache流程图;
图2是小文件追加到HDFS上的目标文件中图;
图3是删除小文件图。
具体实施方式
为了解决现有技术中存在的技术问题,本发明提出一种针对小文件合并的批量删除/查询方法与装置,包括:
本发明提出一种针对小文件合并的批量删除/查询方法,包括:
将小文件上传到Memcache步骤,客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;
小文件删除步骤,在所述目标文件中添加标志文件flag,以及标志文件DE_flag,所述客户端收到删除所述小文件的请求后,先从所述表key_list中查找是否存在所述小文件的所述key,若存在,则从所述Memcache中取出并删除所述小文件,并删除所述表key_list中所述小文件的所述key,否则在所述标识文件flag中记录所述小文件的文件名;
小文件查询步骤,获取需要查询的文件F,查询所述表key_list上记录的所述文件F的key,根据所述key从所述Memcache中取出所述文件F,返回给所述客户端。
所述将小文件上传到Memcache步骤包括预测所述Memcache中是否存在足够的空间容纳所述小文件其中所述Memcache中剩余空间为Li,所述小文件大小为Si,所述Memcache总空间为P,若Li+Si<=P,则将所述小文件放入所述Memcache中,若Li+fi>P,则将所述小文件存储到磁盘上,不再有新的小文件上传后,再将磁盘上的小文件上传到所述Memcache中;将线程进行加锁,保证同时只有一个线程执行写所述表key_list;从所述Memcache上下载所述表key_list;将所述小文件的文件名以及所述目标文件的文件名追加到key_list文件后;将所述表key_list上传到所述Memcache,将线程进行解锁。
所述小文件删除步骤,还包括
根据所述小文件的文件名查找要删除的小文件所在的目标文件的位置;
在与所述目标文件相对于的标志文件flag上记录信息,所述信息为要删除的小文件的文件名;
设置一阈值V,定期遍历每一个合并后的目标文件下的标志文件flag与_index文件,并读取这两个文件的行数c1与c2,当c1/c2<V时,不做任何操作,当c1/c2>=V时,则另外起用一个线程,对目标文件进行重新合并,重新合并步骤为:
在目标文件所在文件夹下新建标志文件DE_flag,把合并后的目标文件恢复成小文件,并下载到本地,把标志文件flag也下载到本地,并清空所述标志文件flag;
读取本地的标志文件flag,按行获取信息,每一行为一个要删除的文件,从本地的小文件中找到要删除的文件并删除;
把删除完成后剩余的小文件上传到HDFS,并利用hadoop archive的方法进行重新合并;
把HDFS上原有的标志文件flag复制到新合并的目标文件中,并用新合并的目标文件替换旧的目标文件。
所述小文件查询步骤包括,步骤21,获取需要访问所述文件F,首先查询所述表key_list上是否记录了所述文件F的key,如果记录了所述文件F,则根据所述key从所述Memcache中取出所述文件F,返回给所述客户端,否则执行步骤22;
步骤22,查询所述表key_process,如果记录了key,则从所述Memcache中用key取出所述文件F,否则执行步骤23;
步骤23,根据所述文件F,查询所述文件F对应的目标文件的位置;
步骤24,查询目标文件中的标志文件flag中是否记录目标文件的文件名,如果有,则返回客户端目标文件不存在,否则执行步骤25;
步骤25,从该目标文件中的_masterindex与_index中查询所述文件F,并返回给客户端。
本发明还提出一种针对小文件合并的批量删除/查询装置,包括:
将小文件上传到Memcache模块,用于客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;
小文件删除模块,用于在所述目标文件中添加标志文件flag,以及标志文件DE_flag,所述客户端收到删除所述小文件的请求后,先从所述表key_list中查询是否存在所述小文件的所述key,若存在,则从所述Memcache中取出并删除所述小文件,并删除所述表key_list中所述小文件的所述key,否则在所述标识文件flag中记录所述小文件的文件名
小文件查询模块,用于获取需要查询的文件F,查询所述表key_list上记录的所述文件F的key,根据所述key从所述Memcache中取出所述文件F,返回给所述客户端。
所述将小文件上传到Memcache模块包括预测所述Memcache中是否存在足够的空间容纳所述小文件其中所述Memcache中剩余空间为Li,所述小文件大小为Si,所述Memcache总空间为P,若Li+Si<=P,则将所述小文件放入所述Memcache中,若Li+fi>P,则将所述小文件存储到磁盘上,不再有新的小文件上传后,再将磁盘上的小文件上传到所述Memcache中;将线程进行加锁,保证同时只有一个线程执行写所述表key_list;从所述Memcache上下载所述表key_list;将所述小文件的文件名以及所述目标文件的文件名追加到key_list文件后;将所述表key_list上传到所述Memcache,将线程进行解锁。
所述小文件删除模块,还包括
根据所述小文件的文件名查询要删除的小文件所在的目标文件的位置;
在与所述目标文件相对于的标志文件flag上记录信息,所述信息为要删除的小文件的文件名;
设置一阈值V,定期遍历每一个合并后的目标文件下的标志文件flag与_index文件,并读取这两个文件的行数c1与c2,当c1/c2<V时,不做任何操作,当c1/c2>=V时,则另外起用一个线程,对目标文件进行重新合并,重新合并步骤为:
在目标文件所在文件夹下新建标志文件DE_flag,把合并后的目标文件恢复成小文件,并下载到本地,把标志文件flag也下载到本地,并清空所述标志文件flag;
读取本地的标志文件flag,按行获取信息,每一行为一个要删除的文件,从本地的小文件中找到要删除的文件并删除;
把删除完成后剩余的小文件上传到HDFS,并利用hadoop archive的方法进行重新合并;
把HDFS上原有的标志文件flag复制到新合并的目标文件中,并用新合并的目标文件替换旧的目标文件。
小文件查询模块用于执行以下步骤:步骤21,获取需要访问文件F,首先查询所述表key_list上是否记录了所述文件F的key,如果记录了所述文件F,则根据所述key从所述Memcache中取出所述文件F,返回给所述客户端,否则执行步骤22;
步骤22,查询所述表key_process,如果记录了key,则从所述Memcache中用key取出所述文件F,否则执行步骤23;
步骤23,根据所述文件F,查询所述文件F对应的目标文件的位置;
步骤24,查询目标文件中的标志文件flag中是否记录目标文件的文件名,如果有,则返回客户端目标文件不存在,否则执行步骤25;
步骤25,从目标文件中的_masterindex与_index中查询所述文件F,并返回给客户端。
下面结合附图1,2,更进一步描述本发明步骤,如图1,2本发明追加文件的步骤包含连续执行:A、缓存文件;B、将小文件追加到HDFS上的目标文件中。具体的一种实施方式如下:
A.缓存文件,将文件从客户端上传到Memcache中。其实现方法为:
A1.用户从客户端发出追加小文件请求,包括小文件fi,文件路径pi,文件名srci,目标文件名desti
A2.将文件名srci作为key,fi作为value,然后上传到Memcache中,分别执行以下步骤:
A2-1:预测Memcache中是否有足够的空间能容纳fi。Memcache中剩余空间为Li,fi大小为Si,总空间为P,比较Li+Si与P的大小。这里有两种可能:1)Li+Si<=P,即Memcache的空间足以容纳fi,则将fi放入Memcache中;2)Li+Si>P,也就是说Memcache已经不能容纳下fi了,则将fi存储到磁盘上。不再有新的小文件上传后,再将磁盘上的小文件上传到Memcache中。
A3.将上传文件名srci以及目标文件名desti写入key_list文件中。分别执行以下步骤:
A3-1:加锁,保证同时只有一个线程写key_list文件;
A3-2:从Memcache上下载key_list文件;
A3-3:将需要上传文件的文件名srci以及目标文件名desti追加到key_list文件后;
A3-4:将key_list上传到Memcache,解锁。
B.将小文件追加到HDFS上的目标文件中,其实现方法为:
B1.从Memcache上下载key_list,得到Memcache上的文件名列表,用变量count记录当前正在运行的线程数;
B2.将key_list复制到文件key_process中,清空key_list,上传key_list和key_process;
B3.判断是否开始追加下一个小文件,这里有两种可能情况:1)count<n,则从key_process中取出一个srci和desti,从Memcache上得到相应的fi,执行B4;2)count>=n,则等待有线程执行完毕(其中n为最大并发处理数);
B4.创建一个新线程,判断desti目标文件下是否包含标志文件DE_flag,这里有两种情况:1)包含,则说明该目标文件正在进行删除操作,故挂起线程,等待删除结束;2)不包含,则执行B5;
B5.判断desti目标文件下是否包含标志文件ADD_flag,这里有两种情况:1)包含,则说明目标文件正在进行追加操作,故挂起线程,等待追加结束;2)不包含,则执行B6;
B6.将fi追加到desti中;目标文件所在文件夹下包括四个文件:标志文件:SUCCESS;数据文件:part-x,文件的内容;索引文件:记录part中偏移的_index以及记录_index中的偏移_masterindex。这里要追加后三个文件,步骤如下所示:
B6-1:在desti下查找标号最大的part文件(part-m);在目标文件desti目录下遍历part-x文件,得到各个文件的名称,找到x最大的为part-m;
B6-2:预测fi追加到part-m后是否会超过part-m的最大限制。Fi大小为si,part-m大小为pi,文件大小限制为L。1)若si+pi>L,则新建一个part-(m+1)文件,将fi写入part-(m+1)中;2)若si+pi<=L,则将fi以字节流的形式追加到desti下的part-m文件后面;
B6-3:将文件名srci,文件大小,权限,时间戳,在part-x文件中的起始位置等内容以字节流的形式追加到_index文件后面,其中_index记录了文件在part-x中的存储偏移位置;
B6-4:_masterindex记录了_index文件中的偏移位置,将追加前的_index文件大小以及追加后的文件大小以字节流的形式写入_masterindex中;
B7.删除Memcache中的小文件fi
B8.T记录当前时间,在t时间后,再进行下一批文件追加。
如图3,将小文件从HDFS上的目标文件中删除,具体的实施方式如下:
C1.客户端发出删除小文件fd的请求。
C2.从key_list文件中查找是否存在该小文件的记录,存在则从Memcache中取出并删除该小文件,并删除key_list文件中的该小文件的记录,删除小文件请求处理结束。若key_list文件中不存在该小文件的key,则继续往下执行。
C3.根据fd找到要删除的小文件所在的目标文件的位置。
C4.在该目标文件所在的文件下的标志文件flag上记录一行信息,该信息即为要删除的小文件的文件名。
C5.设定一个阈值V,定期遍历每一个合并后的目标文件下的标志文件flag和_index文件,并读取这两个文件的行数c1和c2。当c1/c2<V时,不做任何操作;当c1/c2>=V时,则另起一个线程,对该目标文件进行重新合并,重新合并过程如下:
C5-1.在该目标文件所在文件夹下新建DE_flag标志文档,把合并后的目标文件恢复成小文件下载到本地,把标志文件flag也下载到本地,并清空hdfs上的此标志文件flag。
C5-2.读取本地的标志文件flag,按行获取信息,每一行就是一个要删除的文件,从本地的小文件中找到要删除的文件并删除。
C5-3.把剩下的小文件上传到HDFS,并利用hadoop archive的方法进行重新合并。
C5-4.把HDFS上原的标志文件flag复制到新合并好的目标文件.har中,并用该文件夹替换旧的目标文件夹。
访问小文件,具体的实施方式如下:
D1.客户端发出访问请求,需要访问F文件,首先查找key_list文件上面是否记录了key,如果记录了要访问的文件,则直接根据该key从Memcache中取出该文件,返回给客户端。如果没有执行D2。
D2.查找key_process文件,如果记录了key,则从Memcache中用key取出该文件;否则执行D3。
D3.根据F文件,找到该文件对应的目标文件的位置。
D4.查找该目标文件中的标志文件flag中是否记录该文件名,如果有,则返回客户端该文件不存在。如果无,则执行D3。
D5.从该目标文件中的_masterindex和_index中查找F文件,并返回给客户端。

Claims (8)

1.一种针对小文件合并的批量删除/查询方法,其特征在于,包括:
将小文件上传到Memcache步骤,客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;
小文件删除步骤,在所述目标文件中添加标志文件flag,以及标志文件DE_flag,所述客户端收到删除所述小文件的请求后,先从所述表key_list中查找是否存在所述小文件的所述key,若存在,则从所述Memcache中取出并删除所述小文件,并删除所述表key_list中所述小文件的所述key,否则在所述标识文件flag中记录所述小文件的文件名;
小文件查询步骤,获取需要查询的文件F,查询所述表key_list上记录的所述文件F的key,根据所述key从所述Memcache中取出所述文件F,返回给所述客户端。
2.如权利要求1所述的针对小文件合并的批量追加/删除/查询/方法,其特征在于,所述将小文件上传到Memcache步骤包括预测所述Memcache中是否存在足够的空间容纳所述小文件其中所述Memcache中剩余空间为Li,所述小文件大小为Si,所述Memcache总空间为P,若Li+Si<=P,则将所述小文件放入所述Memcache中,若Li+fi>P,则将所述小文件存储到磁盘上,不再有新的小文件上传后,再将磁盘上的小文件上传到所述Memcache中;将线程进行加锁,保证同时只有一个线程执行写所述表key_list;从所述Memcache上下载所述表key_list;将所述小文件的文件名以及所述目标文件的文件名追加到key_list文件后;将所述表key_list上传到所述Memcache,将线程进行解锁。
3.如权利要求1所述的针对小文件合并的批量追加/删除/查询/方法,其特征在于,所述小文件删除步骤,还包括
根据所述小文件的文件名查找要删除的小文件所在的目标文件的位置;
在与所述目标文件相对于的标志文件flag上记录信息,所述信息为要删除的小文件的文件名;
设置一阈值V,定期遍历每一个合并后的目标文件下的标志文件flag与_index文件,并读取这两个文件的行数c1与c2,当c1/c2<V时,不做任何操作,当c1/c2>=V时,则另外起用一个线程,对目标文件进行重新合并,重新合并步骤为:
在目标文件所在文件夹下新建标志文件DE_flag,把合并后的目标文件恢复成小文件,并下载到本地,把标志文件flag也下载到本地,并清空所述标志文件flag;
读取本地的标志文件flag,按行获取信息,每一行为一个要删除的文件,从本地的小文件中找到要删除的文件并删除;
把删除完成后剩余的小文件上传到HDFS,并利用hadoop archive的方法进行重新合并;
把HDFS上原有的标志文件flag复制到新合并的目标文件中,并用新合并的目标文件替换旧的目标文件。
4.如权利要求1或3所述的针对小文件合并的批量追加/删除/查询/方法,其特征在于,所述小文件查询步骤包括,步骤21,获取需要访问所述文件F,首先查询所述表key_list上是否记录了所述文件F的key,如果记录了所述文件F,则根据所述key从所述Memcache中取出所述文件F,返回给所述客户端,否则执行步骤22;
步骤22,查询所述表key_process,如果记录了key,则从所述Memcache中用key取出所述文件F,否则执行步骤23;
步骤23,根据所述文件F,查询所述文件F对应的目标文件的位置;
步骤24,查询目标文件中的标志文件flag中是否记录目标文件的文件名,如果有,则返回客户端目标文件不存在,否则执行步骤25;
步骤25,从该目标文件中的_masterindex与_index中查询所述文件F,并返回给客户端。
5.一种针对小文件合并的批量删除/查询装置,其特征在于,包括:
将小文件上传到Memcache模块,用于客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;
小文件删除模块,用于在所述目标文件中添加标志文件flag,以及标志文件DE_flag,所述客户端收到删除所述小文件的请求后,先从所述表key_list中查询是否存在所述小文件的所述key,若存在,则从所述Memcache中取出并删除所述小文件,并删除所述表key_list中所述小文件的所述key,否则在所述标识文件flag中记录所述小文件的文件名
小文件查询模块,用于获取需要查询的文件F,查询所述表key_list上记录的所述文件F的key,根据所述key从所述Memcache中取出所述文件F,返回给所述客户端。
6.如权利要求5所述的针对小文件合并的批量追加/删除/查询/装置,其特征在于,所述将小文件上传到Memcache模块包括预测所述Memcache中是否存在足够的空间容纳所述小文件其中所述Memcache中剩余空间为Li,所述小文件大小为Si,所述Memcache总空间为P,若Li+Si<=P,则将所述小文件放入所述Memcache中,若Li+fi>P,则将所述小文件存储到磁盘上,不再有新的小文件上传后,再将磁盘上的小文件上传到所述Memcache中;将线程进行加锁,保证同时只有一个线程执行写所述表key_list;从所述Memcache上下载所述表key_list;将所述小文件的文件名以及所述目标文件的文件名追加到key_list文件后;将所述表key_list上传到所述Memcache,将线程进行解锁。
7.如权利要求5所述的针对小文件合并的批量追加/删除/查询/装置,其特征在于,所述小文件删除模块,还包括
根据所述小文件的文件名查询要删除的小文件所在的目标文件的位置;
在与所述目标文件相对于的标志文件flag上记录信息,所述信息为要删除的小文件的文件名;
设置一阈值V,定期遍历每一个合并后的目标文件下的标志文件flag与_index文件,并读取这两个文件的行数c1与c2,当c1/c2<V时,不做任何操作,当c1/c2>=V时,则另外起用一个线程,对目标文件进行重新合并,重新合并步骤为:
在目标文件所在文件夹下新建标志文件DE_flag,把合并后的目标文件恢复成小文件,并下载到本地,把标志文件flag也下载到本地,并清空所述标志文件flag;
读取本地的标志文件flag,按行获取信息,每一行为一个要删除的文件,从本地的小文件中找到要删除的文件并删除;
把删除完成后剩余的小文件上传到HDFS,并利用hadoop archive的方法进行重新合并;
把HDFS上原有的标志文件flag复制到新合并的目标文件中,并用新合并的目标文件替换旧的目标文件。
8.如权利要求5所述的针对小文件合并的批量追加/删除/查询/装置,其特征在于,还包括小文件查询模块用于执行以下步骤:步骤21,获取需要访问文件F,首先查询所述表key_list上是否记录了所述文件F的key,如果记录了所述文件F,则根据所述key从所述Memcache中取出所述文件F,返回给所述客户端,否则执行步骤22;
步骤22,查询所述表key_process,如果记录了key,则从所述Memcache中用key取出所述文件F,否则执行步骤23;
步骤23,根据所述文件F,查询所述文件F对应的目标文件的位置;
步骤24,查询目标文件中的标志文件flag中是否记录目标文件的文件名,如果有,则返回客户端目标文件不存在,否则执行步骤25;
步骤25,从目标文件中的_masterindex与_index中查询所述文件F,并返回给客户端。
CN201610228082.4A 2016-04-13 2016-04-13 一种针对小文件合并的批量删除/查询方法与装置 Active CN105912675B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610228082.4A CN105912675B (zh) 2016-04-13 2016-04-13 一种针对小文件合并的批量删除/查询方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610228082.4A CN105912675B (zh) 2016-04-13 2016-04-13 一种针对小文件合并的批量删除/查询方法与装置

Publications (2)

Publication Number Publication Date
CN105912675A true CN105912675A (zh) 2016-08-31
CN105912675B CN105912675B (zh) 2019-06-18

Family

ID=56746762

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610228082.4A Active CN105912675B (zh) 2016-04-13 2016-04-13 一种针对小文件合并的批量删除/查询方法与装置

Country Status (1)

Country Link
CN (1) CN105912675B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106960055A (zh) * 2017-04-01 2017-07-18 广东浪潮大数据研究有限公司 一种文件删除方法及装置
CN107368608A (zh) * 2017-08-07 2017-11-21 杭州电子科技大学 基于arc替换算法的hdfs小文件缓存管理方法
CN107704585A (zh) * 2017-10-09 2018-02-16 郑州云海信息技术有限公司 一种查询hdfs数据方法及系统
CN108228100A (zh) * 2017-12-27 2018-06-29 郑州云海信息技术有限公司 一种基于海量存储系统的数据安全处理方法和系统
CN110188076A (zh) * 2019-05-28 2019-08-30 厦门市数证科技有限公司 一种Hadoop文件系统并发高速数据完全删除的方法
CN112527742A (zh) * 2020-11-05 2021-03-19 武汉大千信息技术有限公司 一种快速精准批量删除系统中海量图片数据文件的方法
CN114168084A (zh) * 2021-12-10 2022-03-11 中国电信股份有限公司 文件合并方法、文件合并装置、电子设备以及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117309A (zh) * 2010-01-06 2011-07-06 卓望数码技术(深圳)有限公司 一种数据缓存系统和数据查询方法
CN102332029A (zh) * 2011-10-15 2012-01-25 西安交通大学 一种基于Hadoop的海量可归类小文件关联存储方法
CN102902716A (zh) * 2012-08-27 2013-01-30 苏州两江科技有限公司 基于Hadoop分布式计算平台的存储系统
US20130290636A1 (en) * 2012-04-30 2013-10-31 Qiming Chen Managing memory
CN103425694A (zh) * 2012-05-23 2013-12-04 北京神州泰岳软件股份有限公司 关系型数据的搜索方法和装置
CN103559229A (zh) * 2013-10-22 2014-02-05 西安电子科技大学 基于MapFile的小文件管理服务SFMS系统及其使用方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102117309A (zh) * 2010-01-06 2011-07-06 卓望数码技术(深圳)有限公司 一种数据缓存系统和数据查询方法
CN102332029A (zh) * 2011-10-15 2012-01-25 西安交通大学 一种基于Hadoop的海量可归类小文件关联存储方法
US20130290636A1 (en) * 2012-04-30 2013-10-31 Qiming Chen Managing memory
CN103425694A (zh) * 2012-05-23 2013-12-04 北京神州泰岳软件股份有限公司 关系型数据的搜索方法和装置
CN102902716A (zh) * 2012-08-27 2013-01-30 苏州两江科技有限公司 基于Hadoop分布式计算平台的存储系统
CN103559229A (zh) * 2013-10-22 2014-02-05 西安电子科技大学 基于MapFile的小文件管理服务SFMS系统及其使用方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106960055A (zh) * 2017-04-01 2017-07-18 广东浪潮大数据研究有限公司 一种文件删除方法及装置
CN106960055B (zh) * 2017-04-01 2020-08-04 广东浪潮大数据研究有限公司 一种文件删除方法及装置
CN107368608A (zh) * 2017-08-07 2017-11-21 杭州电子科技大学 基于arc替换算法的hdfs小文件缓存管理方法
CN107704585A (zh) * 2017-10-09 2018-02-16 郑州云海信息技术有限公司 一种查询hdfs数据方法及系统
CN108228100A (zh) * 2017-12-27 2018-06-29 郑州云海信息技术有限公司 一种基于海量存储系统的数据安全处理方法和系统
CN110188076A (zh) * 2019-05-28 2019-08-30 厦门市数证科技有限公司 一种Hadoop文件系统并发高速数据完全删除的方法
CN110188076B (zh) * 2019-05-28 2021-04-30 厦门市数证科技有限公司 一种Hadoop文件系统并发高速数据完全删除的方法
CN112527742A (zh) * 2020-11-05 2021-03-19 武汉大千信息技术有限公司 一种快速精准批量删除系统中海量图片数据文件的方法
CN114168084A (zh) * 2021-12-10 2022-03-11 中国电信股份有限公司 文件合并方法、文件合并装置、电子设备以及存储介质

Also Published As

Publication number Publication date
CN105912675B (zh) 2019-06-18

Similar Documents

Publication Publication Date Title
CN105912675A (zh) 一种针对小文件合并的批量删除/查询方法与装置
US9710535B2 (en) Object storage system with local transaction logs, a distributed namespace, and optimized support for user directories
CN102346695B (zh) 渐进式备份的基于片段的高延展的去复本系统与方法
US8620884B2 (en) Scalable blob storage integrated with scalable structured storage
US8868624B2 (en) Blob manipulation in an integrated structured storage system
CN105678189B (zh) 加密数据文件存储和检索系统及方法
CN103605805B (zh) 一种海量时序数据的存储方法
KR20200053512A (ko) Kvs 트리 데이터베이스
Liu et al. Implementing WebGIS on Hadoop: A case study of improving small file I/O performance on HDFS
CN105677826A (zh) 一种针对海量非结构化数据的资源管理方法
US20080005145A1 (en) Data processing
JP5233233B2 (ja) 情報検索システム、情報検索用インデックスの登録装置、情報検索方法及びプログラム
CN103870588B (zh) 一种在数据库中使用的方法及装置
CN110119425A (zh) 固态驱动器、分布式数据存储系统和利用键值存储的方法
CN1622087A (zh) 管理文件系统版本
CN104899297A (zh) 具有存储感知的混合索引结构
CN105868286A (zh) 基于分布式文件系统小文件合并的并行追加方法及系统
CN105787093A (zh) 一种基于LSM-Tree结构的日志文件系统的构建方法
US8090925B2 (en) Storing data streams in memory based on upper and lower stream size thresholds
CN104978330A (zh) 一种数据存储的方法及装置
CN105045850B (zh) 云存储日志文件系统中垃圾数据回收方法
EP3788505B1 (en) Storing data items and identifying stored data items
CN109063192A (zh) 一种高性能海量文件存储系统工作方法
CN107766374A (zh) 一种海量小文件存储读取的优化方法和系统
CN107357920A (zh) 一种增量式的多副本数据同步方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240320

Address after: Room 711C, Floor 7, Building A, Yard 19, Ronghua Middle Road, Daxing District, Beijing Economic-Technological Development Area, 100176

Patentee after: Beijing Zhongke Flux Technology Co.,Ltd.

Country or region after: China

Address before: 100190 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences

Country or region before: China

TR01 Transfer of patent right