CN105868286A - 基于分布式文件***小文件合并的并行追加方法及*** - Google Patents

基于分布式文件***小文件合并的并行追加方法及*** Download PDF

Info

Publication number
CN105868286A
CN105868286A CN201610169389.1A CN201610169389A CN105868286A CN 105868286 A CN105868286 A CN 105868286A CN 201610169389 A CN201610169389 A CN 201610169389A CN 105868286 A CN105868286 A CN 105868286A
Authority
CN
China
Prior art keywords
list
small documents
key
memcache
request
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
CN201610169389.1A
Other languages
English (en)
Other versions
CN105868286B (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 CN201610169389.1A priority Critical patent/CN105868286B/zh
Publication of CN105868286A publication Critical patent/CN105868286A/zh
Application granted granted Critical
Publication of CN105868286B publication Critical patent/CN105868286B/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/13File access structures, e.g. distributed indices
    • 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/18File system types
    • G06F16/182Distributed file systems

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提出基于分布式文件***小文件合并的并行追加方法及***,该方法包括将小文件上传到Memcache步骤,客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;小文件追加到目标大文件步骤,从所述Memcache中下载所述表key_list,根据所述表key_list中所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线性表,所述线性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应的所述小文件合并。

Description

基于分布式文件***小文件合并的并行追加方法及***
技术领域
本发明涉及文件处理领域问题,特别涉及基于分布式文件***小文件合并的并行追加方法及***。
背景技术
互联网改变了世界,并带动了一系列产业链,每年电子产品等设备产生的数据量都暴增。2013年IDC和EMC发布的“数字宇宙报告”预计,到2020年,数字宇宙规模将达到40ZB,由于网上购物、社交媒体的兴起,产生了大量的图片、邮件、消息、日志文件,在暴增的数据中占有了极大部分,这些文件的大小基本为K级或M级,由于大小小于HDFS上块大小,因此都属于小文件。
Hadoop是一种大数据存储和处理平台,能够对大规模分布式数据集进行处理,被业界广泛使用,尽管如此,Hadoop并不适合大量小文件的存储,在NameNode上会产生大量的元数据,给性能带来极大的影响。
解决小文件的存储和处理问题,主要有以下这些方式:
1.Hadoop自带功能:
(1)Archive:Archive是一种文件存档工具,能够高效地将HDFS中的小文件合并为一个HAR文件,形成文件存储二级结构,对外,HAR是一个大文件,在NameNode中保存它的元数据;对内建立索引,用来访问合并的小文件,从而降低了NameNode中元数据的数据量,Archive并不完美,它的缺点是,将小文件合并为HAR文件的过程是一个MapReduce作业,速度比较慢;且文件一旦创建,便不可改变。
(2)SequenceFile:SequenceFile由一系列二进制key/value组成,当小文件名作为key,文件内容作为value,可将大批小文件序列化到一个大文件中,作为一个二进制序列化过的字节流组成的文本存储文件,能够在map/reduce过程中被使用。
(3)CombineFileInputFormat:在执行MapReduce任务时,若每个小文件产生一个mapper,会造成资源浪费的问题,CombineFileInputFormat在mapper中将多个文件合成一个split作为输入,减少mapper数量,提高MapReduce任务的执行速度,且提高资源利用率。
2.其他方法:
现有的研究情况主要在两个场景下研究小文件的合并:(1)HDFS海量小文件存储(2)MapReduce中小文件合并。Hadoop的自带功能中,Archive属于(1);SequenceFile和CombineFileInputFormat都属于(2),除此以外,本发明也是在(1)的场景下进行研究。
很多研究与本发明一样,将文件合并后,再上传到存储位置(如“李铁,《面向海量小文件存取的HDFS优化研究》,东华大学学位论文,2015年”、发明专利“一种小文件处理方法及装置”、发明专利“一种Hadoop存取海量小文件的优化方法”、发明专利“海量小文件分级存储方法及***”、“杨彬,“分布式文件***HDFS处理小文件的优化方案”,软件2014年第35卷第6期,2014年”、发明专利“一种小文件的存储、查询及删除方法和***”、发明专利“一种集群存储中并行访问大量小文件的方法及***”)。“李铁,“面向海量小文件存取的HDFS优化研究”,东华大学学位论文,2015年”设计了一个基于HDFS的中间件,在用户接口与HDFS之间建立一个任务层,每个功能对应自己的缓冲区,将需要合并或删除的文件先暂时存入各自的缓冲区中,当文件达到一定数量或过了一定时间,再统一对需要处理的一批文件进行操作,然而这个方法不能将文件追加到已有的文件中,只能和新的文件一起合并。发明专利“一种小文件处理方法及装置”将具有相同文件标识的文件组合在一起,将每个小文件的索引关键值封装到文件块中,存入第一内存区中,与本发明不同的地方是,发明专利“一种小文件处理方法及装置”进行文件查询时,将文件块整体读入第二内存区中,本发明不需要将整个文件块读出。发明专利“一种集群存储中并行访问大量小文件的方法及***”将小文件存放在缓存中,根据文件大小,当缓存的小文件的大小的总和达到第一预设值时,将所述缓存的小文件合并成一个临时文件,存放在缓存中。发明专利“海量小文件分级存储方法及***”与发明专利“一种集群存储中并行访问大量小文件的方法及***”类似,采用存储池,但不同的是发明专利“海量小文件分级存储方法及***”中存储池是合并后的大文件的最终存储位置。“杨彬,“分布式文件***HDFS处理小文件的优化方案”,软件2014年第35卷第6期,2014年”将索引表放置在合并文件块开头,形成HDFS的扩展类型,用来记录合并块中每个小文件的偏移位置;在NameNode中记录每个合并文件包含哪些块的信息,查询时通过文件名称,就能查找到文件的具***置。发明专利“一种小文件的存储、查询及删除方法和***”在上传前就将小文件合并为了大文件,大文件由索引区偏移量存储区域,小文件存储区域以及小文件索引信息存储区域组成,且三个文件区域连续存放,当需要将小文件并入大文件时,将小文件存入小文件存储区域后,需要将小文件索引信息存储区域向后偏移小文件大小,这与本发明中三个部分是作为单独文件存在不同。
发明内容
针对现有技术的不足,本发明提出分布式文件***小文件合并的并行追加方法及***。
本发明提出一种分布式文件***小文件合并的并行追加方法,包括:
将小文件上传到Memcache步骤,客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;
小文件追加到目标大文件步骤,从所述Memcache中下载所述表key_list,根据所述表key_list中所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线性表,所述线性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应的所述小文件合并。
所述步骤1还包括当所述客户端上传所述小文件后,发出一个追加请求,将所述追加请求放入请求队列request_queue中;
从所述请求队列request_queue中取出所述追加请求,创建一个线程处理所述追加请求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,则重新进行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数若所述线程数count<=所述最大并发处理数未超过最大并发数,则将所述线程数count加1,若所述线程数count>所述最大并发处理数则不取出所述追加请求,当存在上传文件的线程结束后再取出所述追加请求,并对所述追加请求进行处理。
所述步骤1包括对当前线程加锁,使当前只有一个线程在修改所述表key_list;从所述Memcache下载所述表key_list;将所述key从尾部追加到所述表key_list里;将修改后的所述表key_list上传到所述Memcache中;对所述当前线程解锁,并将所述线程数count减1。
所述步骤2包括从所述Memcache下载所述表key_list,重命名为表key_list_local;判断key_list是否为空,若所述表key_list为空,则用变量T来记录时间,t时间后对下一批小文件进行追加;否则创建空的表key_list,将其上传到所述Memcache中。
所述步骤2包括:打开所述表key_list_local,读取所述小文件的名称与所述目标文件;将所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及以上的小文件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。
本发明还提出一种分布式文件***小文件合并的并行追加***,包括:
上传模块,用于客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;
合并模块,用于从所述Memcache中下载所述表key_list,根据所述表key_list中所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线性表,所述线性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应的所述小文件合并。
所述上传模块还包括当所述客户端上传所述小文件后后,发出一个追加请求,将所述追加请求放入请求队列request_queue中;
从所述请求队列request_queue中取出所述追加请求,创建一个线程处理所述追加请求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,则重新进行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数若所述线程数count<=所述最大并发处理数未超过最大并发数,则将所述线程数count加1,若所述线程数count>所述最大并发处理数则不取出所述追加请求,当存在上传文件的线程结束后再取出所述追加请求,并对所述追加请求进行处理。
所述上传模块包括对当前线程加锁,使当前只有一个线程在修改所述表key_list;从所述Memcache下载所述表key_list;将所述key从尾部追加到所述表key_list里;将修改后的所述表key_list上传到所述Memcache中;对所述当前线程解锁,并将所述线程数count减1。
所述合并模块包括从所述Memcache下载所述表key_list,重命名为表key_list_local;判断key_list是否为空,若所述表key_list为空,则用变量T来记录时间,t时间后对下一批小文件进行追加;否则创建空的表key_list,将其上传到所述Memcache中。
所述合并模块包括:打开所述表key_list_local,读取所述小文件的名称与所述目标文件;将所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及以上的小文件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。
由以上方案可知,本发明的优点在于:
本发明并行地向分布式文件***的目标大文件中追加小文件,使小文件按类有序存储,同时减少了NameNode中的元数据,减轻NameNode的压力;降低了上传时的IO开销,使追加小文件更加高效。
附图说明
图1是文件上传Memcache流程图;
图2是小文件追加到目标大文件图。
图3是访问小文件流程图。
具体实施方式
为了解决现有技术中存在的技术问题,本发明提出一种分布式文件***小文件合并的并行追加方法,包括:
将小文件上传到Memcache步骤,客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key,memcache是一套分布式的高速缓存***;
小文件追加到目标大文件步骤,从所述Memcache中下载所述表key_list,根据所述表key_list中所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线性表,所述线性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应的所述小文件合并。
所述步骤1还包括当所述客户端上传所述小文件后后,发出一个追加请求,将所述追加请求放入请求队列request_queue中;
从所述请求队列request_queue中取出所述追加请求,创建一个线程处理所述追加请求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,则重新进行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数若所述线程数count<=所述最大并发处理数未超过最大并发数,则将所述线程数count加1,若所述线程数count>所述最大并发处理数则不取出所述追加请求,当存在上传文件的线程结束后再取出所述追加请求,并对所述追加请求进行处理。
所述步骤1包括对当前线程加锁,使当前只有一个线程在修改所述表key_list;从所述Memcache下载所述表key_list;将所述key从尾部追加到所述表key_list里;将修改后的所述表key_list上传到所述Memcache中;对所述当前线程解锁,并将所述线程数count减1。
所述步骤2包括从所述Memcache下载所述表key_list,重命名为表key_list_local;判断key_list是否为空,若所述表key_list为空,则用变量T来记录时间,t时间后对下一批小文件进行追加;否则创建空的表key_list,将其上传到所述Memcache中。
所述步骤2包括:打开所述表key_list_local,读取所述小文件的名称与所述目标文件;将所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及以上的小文件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。
本发明还提出一种分布式文件***小文件合并的并行追加***,包括:
上传模块,用于客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;
合并模块,用于从所述Memcache中下载所述表key_list,根据所述表key_list中所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线性表,所述线性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应的所述小文件合并。
所述上传模块还包括当所述客户端上传所述小文件后后,发出一个追加请求,将所述追加请求放入请求队列request_queue中;
从所述请求队列request_queue中取出所述追加请求,创建一个线程处理所述追加请求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,则重新进行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数若所述线程数count<=所述最大并发处理数未超过最大并发数,则将所述线程数count加1,若所述线程数count>所述最大并发处理数则不取出所述追加请求,当存在上传文件的线程结束后再取出所述追加请求,并对所述追加请求进行处理。
所述上传模块包括对当前线程加锁,使当前只有一个线程在修改所述表key_list;从所述Memcache下载所述表key_list;将所述key从尾部追加到所述表key_list里;将修改后的所述表key_list上传到所述Memcache中;对所述当前线程解锁,并将所述线程数count减1。
所述合并模块包括从所述Memcache下载所述表key_list,重命名为表key_list_local;判断key_list是否为空,若所述表key_list为空,则用变量T来记录时间,t时间后对下一批小文件进行追加;否则创建空的表key_list,将其上传到所述Memcache中。
所述合并模块包括:打开所述表key_list_local,读取所述小文件的名称与所述目标文件;将所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及以上的小文件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。
下面结合附图1,2,更进一步描述本发明步骤,如图1,2本发明追加文件的步骤包含连续执行:A、上传文件到Memcache;B、小文件追加到目标大文件。具体的一种实施方式如下:
A.客户端将文件从本地上传到Memcache中,如图1所示,其实现方法为:
A1.用户在客户端界面,路径pi选择需要的小文件fi,名称为srci,并选择目标文件desti,点击上传小文件fi
A2.客户端点击上传后,会发出一个追加请求,将其放入请求队列request_queue中;
A3.从request_queue中取出请求,创建一个线程处理这个请求,分别执行以下步骤:
A3-1:判断请求队列中是否是空的,有两种可能:1)不空,执行A3-2;2)为空,回到A3-1;
A3-2:判断当前处理请求的线程数count是否小于最大并发处理数这里有两种可能:未超过最大并发数,则将count加1,然后执行A4;则不取出请求,当有上传文件的线程结束后再取出请求,并对其进行处理。
A4.将fi名称srci作为key,将fi内容作为value,上传到Memcache中。
A5.文件fi上传结束后,将key写到文件key_list上,文件key_list存储在Memcache上,记录了Memcache中存储的所有小文件的key。分别执行以下步骤:
A5-1:对当前线程加锁,使当前只有一个线程在修改key_list;
A5-2:将key_list文件从Memcache下载下来;
A5-3:fi的key是其文件名srci,从尾部追加到key_list里;
A5-4:将修改后的key_list上传到Memcache中;
A5-5:对当前线程解锁,并将count减1。
B.将小文件追加到HDFS上的大文件中,如图2所示,其实现方法为:
B1.得到key_list,并更新key_list文件;分别执行以下步骤:
B1-1:从Memcache下载key_list文件,重命名为key_list_local;
B1-2:判断key_list是否为空,有下面两种情况:1)key_list为空,则直接跳到B4;2)key_list不空,则执行B1-3;
B1-3:创建一个空的key_list文件,将其上传到Memcache中。
B2.构建Hash表,用来记录相同目标文件desti的小文件的文件名srci;分别执行以下步骤:
B2-1:打开key_list_local文件,读取每一条记录中的srci和desti
B2-2:将desti作为hash值,将srci分别存入hash表中。当发生冲突时,即两个小文件的desti相同时,则将其加入到对应的线性表后。
B3.将目标文件相同的小文件进行合并,也就是将相同hash地址后对应的线性表中的小文件合并,再追加到目标文件后;分别执行以下步骤:
B3-1:找到θ个不空的hash项,创建θ个线程;
B3-2:在每个线程中,读取相应hash项后面的线性表中的小文件,将这些小文件从Memcache下载下来;
B3-3:将小文件合并为一个中文件fmi,并记录每个文件大小sizei
B3-4:打开HDFS上的目标文件,计算part-x文件追加前的大小part_sizei,将fmi用字节流的形式append到目标文件下的part-x文件后;
B3-5:_index是part-x文件的索引文件,记录了part-x中存储的每个文件的目录,名称,权限,时间戳,起始偏移位置,大小等信息。记录_index文件修改前的大小index_size_before;将srci作为文件名,part_size作为起始偏移位置,sizei作为大小,按照相应的格式,将需要的信息写到_index文件后,并记录修改后_index文件的大小index_size_after;
B3-6:_masterindex文件是_index文件的索引文件,将index_size_before和index_size_after分别作为index文件起始和结束偏移位置;按照_masterindex文件中记录的格式,将相应信息追加到_masterindex后。
B4.用变量T来记录时间,t时间后处理下一批小文件追加。
如图3,访问小文件,具体的实施方式如下:
C1.客户端发出访问请求,需要访问文件fi,请求中包含文件名srci以及目标文件名desti
C2.从Memcache中的key_list文件上面用文件名查找该文件,执行的具体步骤如下:
C2-1:下载key_list文件;
C2-2:在key_list文件中查找文件名srci,这里包含两种情况:1)key_list中包含该文件,则根据srci从Memcache中取出该文件,并返回给客户端;2)不包含该文件,则执行C3。
C3.从目标文件desti中的_masterindex和_index中查找文件fi,并返回给客户端。

Claims (10)

1.一种分布式文件***小文件合并的并行追加方法,其特征在于,包括:
将小文件上传到Memcache步骤,客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;
小文件追加到目标大文件步骤,从所述Memcache中下载所述表key_list,根据所述表key_list中所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线性表,所述线性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应的所述小文件合并。
2.如权利要求1所述的分布式文件***小文件合并的并行追加方法,其特征在于,所述步骤1还包括当所述客户端上传所述小文件后,发出一个追加请求,将所述追加请求放入请求队列request_queue中;
从所述请求队列request_queue中取出所述追加请求,创建一个线程处理所述追加请求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,则重新进行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数若所述线程数count<=所述最大并发处理数未超过最大并发数,则将所述线程数count加1,若所述线程数count>所述最大并发处理数则不取出所述追加请求,当存在上传文件的线程结束后再取出所述追加请求,并对所述追加请求进行处理。
3.如权利要求1或2所述的分布式文件***小文件合并的并行追加方法,其特征在于,所述步骤1包括对当前线程加锁,使当前只有一个线程在修改所述表key_list;从所述Memcache下载所述表key_list;将所述key从尾部追加到所述表key_list里;将修改后的所述表key_list上传到所述Memcache中;对所述当前线程解锁,并将所述线程数count减1。
4.如权利要求1所述的分布式文件***小文件合并的并行追加方法,其特征在于,所述步骤2包括从所述Memcache下载所述表key_list,重命名为表key_list_local;判断key_list是否为空,若所述表key_list为空,则用变量T来记录时间,t时间后对下一批小文件进行追加;否则创建空的表key_list,将其上传到所述Memcache中。
5.如权利要求1或4所述的分布式文件***小文件合并的并行追加方法,其特征在于,所述步骤2包括:打开所述表key_list_local,读取所述小文件的名称与所述目标文件;将所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及以上的小文件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。
6.一种分布式文件***小文件合并的并行追加***,其特征在于,包括:
上传模块,用于客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;
合并模块,用于从所述Memcache中下载所述表key_list,根据所述表key_list中所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线性表,所述线性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应的所述小文件合并。
7.如权利要求6所述的分布式文件***小文件合并的并行追加***,其特征在于,所述上传模块还包括当所述客户端上传所述小文件后后,发出一个追加请求,将所述追加请求放入请求队列request_queue中;
从所述请求队列request_queue中取出所述追加请求,创建一个线程处理所述追加请求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,则重新进行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数若所述线程数count<=所述最大并发处理数未超过最大并发数,则将所述线程数count加1,若所述线程数count>所述最大并发处理数则不取出所述追加请求,当存在上传文件的线程结束后再取出所述追加请求,并对所述追加请求进行处理。
8.如权利要求6或7所述的分布式文件***小文件合并的并行追加***,其特征在于,所述上传模块包括对当前线程加锁,使当前只有一个线程在修改所述表key_list;从所述Memcache下载所述表key_list;将所述key从尾部追加到所述表key_list里;将修改后的所述表key_list上传到所述Memcache中;对所述当前线程解锁,并将所述线程数count减1。
9.如权利要求6所述的分布式文件***小文件合并的并行追加***,其特征在于,所述合并模块包括从所述Memcache下载所述表key_list,重命名为表key_list_local;判断key_list是否为空,若所述表key_list为空,则用变量T来记录时间,t时间后对下一批小文件进行追加;否则创建空的表key_list,将其上传到所述Memcache中。
10.如权利要求6或9所述的分布式文件***小文件合并的并行追加***,其特征在于,所述合并模块包括:打开所述表key_list_local,读取所述小文件的名称与所述目标文件;将所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及以上的小文件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。
CN201610169389.1A 2016-03-23 2016-03-23 基于分布式文件***小文件合并的并行追加方法及*** Active CN105868286B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610169389.1A CN105868286B (zh) 2016-03-23 2016-03-23 基于分布式文件***小文件合并的并行追加方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610169389.1A CN105868286B (zh) 2016-03-23 2016-03-23 基于分布式文件***小文件合并的并行追加方法及***

Publications (2)

Publication Number Publication Date
CN105868286A true CN105868286A (zh) 2016-08-17
CN105868286B CN105868286B (zh) 2019-03-12

Family

ID=56624829

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610169389.1A Active CN105868286B (zh) 2016-03-23 2016-03-23 基于分布式文件***小文件合并的并行追加方法及***

Country Status (1)

Country Link
CN (1) CN105868286B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776720A (zh) * 2016-11-18 2017-05-31 北京奇虎科技有限公司 一种文件处理方法和装置
CN107045531A (zh) * 2017-01-20 2017-08-15 郑州云海信息技术有限公司 一种优化hdfs小文件存取的***及方法
CN107391280A (zh) * 2017-07-31 2017-11-24 郑州云海信息技术有限公司 一种小文件的接收和存储方法及装置
CN107679177A (zh) * 2017-09-29 2018-02-09 郑州云海信息技术有限公司 一种基于hdfs的小文件存储优化方法、装置、设备
CN108319602A (zh) * 2017-01-17 2018-07-24 广州市动景计算机科技有限公司 数据库管理方法及数据库***
CN108319625A (zh) * 2017-01-17 2018-07-24 广州市动景计算机科技有限公司 文件合并方法和装置
WO2018133762A1 (zh) * 2017-01-17 2018-07-26 广州市动景计算机科技有限公司 文件合并方法和装置
CN108345693A (zh) * 2018-03-16 2018-07-31 中国银行股份有限公司 一种文件处理方法及装置
CN109408466A (zh) * 2018-11-01 2019-03-01 江苏农牧科技职业学院 一种农业物联网用冗余数据处理方法及装置
CN109947721A (zh) * 2017-12-01 2019-06-28 北京安天网络安全技术有限公司 一种小文件处理方法和装置
CN110147203A (zh) * 2019-05-16 2019-08-20 北京金山云网络技术有限公司 一种文件管理方法、装置、电子设备及存储介质
CN110505314A (zh) * 2019-09-26 2019-11-26 浪潮电子信息产业股份有限公司 一种并发追加上传请求的处理方法
CN113031871A (zh) * 2021-03-26 2021-06-25 山东英信计算机技术有限公司 数据追加聚合方法、装置、电子设备及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110106806A1 (en) * 2009-11-02 2011-05-05 Stg Interactive Process for optimizing file storage systems
CN103218455A (zh) * 2013-05-07 2013-07-24 中国人民解放军国防科学技术大学 Key-Value数据库用户请求的高速并发处理方法
CN103577123A (zh) * 2013-11-12 2014-02-12 河海大学 一种基于hdfs的小文件优化存储方法
CN104462563A (zh) * 2014-12-26 2015-03-25 浙江宇视科技有限公司 一种文件存储方法和***
CN105404652A (zh) * 2015-10-29 2016-03-16 河海大学 一种基于hdfs的海量小文件处理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110106806A1 (en) * 2009-11-02 2011-05-05 Stg Interactive Process for optimizing file storage systems
CN103218455A (zh) * 2013-05-07 2013-07-24 中国人民解放军国防科学技术大学 Key-Value数据库用户请求的高速并发处理方法
CN103577123A (zh) * 2013-11-12 2014-02-12 河海大学 一种基于hdfs的小文件优化存储方法
CN104462563A (zh) * 2014-12-26 2015-03-25 浙江宇视科技有限公司 一种文件存储方法和***
CN105404652A (zh) * 2015-10-29 2016-03-16 河海大学 一种基于hdfs的海量小文件处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ANKITA PATEL 等: "A novel approach for efficient handling of small files in HDFS", 《2015 IEEE INTERNATIONAL ADVANCE COMPUTING CONFERENCE》 *
付松龄 等: "FlatLFS:一种面向海量小文件处理优化的轻量级文件***", 《国防科技大学学报》 *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776720A (zh) * 2016-11-18 2017-05-31 北京奇虎科技有限公司 一种文件处理方法和装置
CN108319602B (zh) * 2017-01-17 2020-10-16 阿里巴巴(中国)有限公司 数据库管理方法及数据库***
CN108319602A (zh) * 2017-01-17 2018-07-24 广州市动景计算机科技有限公司 数据库管理方法及数据库***
CN108319625A (zh) * 2017-01-17 2018-07-24 广州市动景计算机科技有限公司 文件合并方法和装置
WO2018133762A1 (zh) * 2017-01-17 2018-07-26 广州市动景计算机科技有限公司 文件合并方法和装置
CN108319625B (zh) * 2017-01-17 2019-10-25 广州市动景计算机科技有限公司 文件合并方法和装置
CN107045531A (zh) * 2017-01-20 2017-08-15 郑州云海信息技术有限公司 一种优化hdfs小文件存取的***及方法
CN107391280A (zh) * 2017-07-31 2017-11-24 郑州云海信息技术有限公司 一种小文件的接收和存储方法及装置
CN107679177A (zh) * 2017-09-29 2018-02-09 郑州云海信息技术有限公司 一种基于hdfs的小文件存储优化方法、装置、设备
CN109947721A (zh) * 2017-12-01 2019-06-28 北京安天网络安全技术有限公司 一种小文件处理方法和装置
CN109947721B (zh) * 2017-12-01 2021-08-17 北京安天网络安全技术有限公司 一种小文件处理方法和装置
CN108345693A (zh) * 2018-03-16 2018-07-31 中国银行股份有限公司 一种文件处理方法及装置
CN109408466A (zh) * 2018-11-01 2019-03-01 江苏农牧科技职业学院 一种农业物联网用冗余数据处理方法及装置
CN109408466B (zh) * 2018-11-01 2020-03-13 江苏农牧科技职业学院 一种农业物联网用冗余数据处理方法及装置
CN110147203A (zh) * 2019-05-16 2019-08-20 北京金山云网络技术有限公司 一种文件管理方法、装置、电子设备及存储介质
CN110147203B (zh) * 2019-05-16 2022-11-04 北京金山云网络技术有限公司 一种文件管理方法、装置、电子设备及存储介质
CN110505314A (zh) * 2019-09-26 2019-11-26 浪潮电子信息产业股份有限公司 一种并发追加上传请求的处理方法
CN113031871A (zh) * 2021-03-26 2021-06-25 山东英信计算机技术有限公司 数据追加聚合方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN105868286B (zh) 2019-03-12

Similar Documents

Publication Publication Date Title
CN105868286A (zh) 基于分布式文件***小文件合并的并行追加方法及***
US11599507B2 (en) Deduplicated merged indexed object storage file system
US11507594B2 (en) Bulk data distribution system
JP5656563B2 (ja) 文書管理システム、文書管理システムの制御方法、プログラム
CN103179185B (zh) 一种分布式文件***客户端缓存中文件创建方法及其***
US8620861B1 (en) Preserving file metadata during atomic save operations
CN106484906B (zh) 一种分布式对象存储***闪回方法及装置
CN104881466B (zh) 数据分片的处理以及垃圾文件的删除方法和装置
CN104778192B (zh) 表示可内容寻址存储***的目录结构
CN111427847A (zh) 面向用户自定义元数据的索引与查询方法和***
CN105912675A (zh) 一种针对小文件合并的批量删除/查询方法与装置
CN109451004A (zh) 基于云网桥的云存储***及方法
CN106326035A (zh) 一种基于文件元数据的增量备份方法
CN112965939A (zh) 一种文件合并方法、装置和设备
CN101727503A (zh) 一种创建磁盘文件***的方法
US9934240B2 (en) On demand access to client cached files
CN106708911A (zh) 一种云环境下数据文件同步的方法和装置
CN104516945A (zh) 一种基于关系数据库的hdfs元数据存储方法
CN105631010A (zh) 一种基于hdfs小文件存储的优化方法
CN104021137A (zh) 一种基于目录授权的客户端本地开闭文件的方法及***
CN102360382B (zh) 一种高速对象并行存储***目录复制方法
US11809381B2 (en) Accessing network based content items by a mobile device while offline
CN106227830A (zh) 存储和读取文件的方法和装置
Jayakar et al. Efficient way for handling small files using extended HDFS
CN111782150A (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