基于分布式文件系统小文件合并的并行追加方法及系统的制作方法

文档序号:10512265阅读:446来源:国知局
基于分布式文件系统小文件合并的并行追加方法及系统的制作方法
【专利摘要】本发明提出基于分布式文件系统小文件合并的并行追加方法及系统,该方法包括将小文件上传到Memcache步骤,客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_list上,所述表key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件的key;小文件追加到目标大文件步骤,从所述Memcache中下载所述表key_list,根据所述表key_list中所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线性表,所述线性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应的所述小文件合并。
【专利说明】
基于分布式文件系统小文件合并的并行追加方法及系统
技术领域
[0001] 本发明涉及文件处理领域问题,特别涉及基于分布式文件系统小文件合并的并行 追加方法及系统。
【背景技术】
[0002] 互联网改变了世界,并带动了一系列产业链,每年电子产品等设备产生的数据量 都暴增。2013年IDC和EMC发布的"数字宇宙报告"预计,到2020年,数字宇宙规模将达到 40ZB,由于网上购物、社交媒体的兴起,产生了大量的图片、邮件、消息、日志文件,在暴增的 数据中占有了极大部分,这些文件的大小基本为K级或Μ级,由于大小小于HDFS上块大小,因 此都属于小文件。
[0003] Hadoop是一种大数据存储和处理平台,能够对大规模分布式数据集进行处理,被 业界广泛使用,尽管如此,Hadoop并不适合大量小文件的存储,在NameNode上会产生大量的 元数据,给性能带来极大的影响。
[0004] 解决小文件的存储和处理问题,主要有以下这些方式:
[0005] 1 .Hadoop 自带功能:
[0006] (1从代1^代:4代1^代是一种文件存档工具,能够高效地将!10?3中的小文件合并为 一个HAR文件,形成文件存储二级结构,对外,HAR是一个大文件,在NameNode中保存它的元 数据;对内建立索引,用来访问合并的小文件,从而降低了NameNode中元数据的数据量, Archive并不完美,它的缺点是,将小文件合并为HAR文件的过程是一个MapReduce作业,速 度比较慢;且文件一旦创建,便不可改变。
[0007] (2)SequenceFile: SequenceFile由一系列二进制key/value组成,当小文件名作 为key,文件内容作为value,可将大批小文件序列化到一个大文件中,作为一个二进制序列 化过的字节流组成的文本存储文件,能够在map/reduce过程中被使用。
[0008] (3)CombineFilelnputFormat:在执行MapReduce任务时,若每个小文件产生一个 mapper,会造成资源浪费的问题,CombineFi lelnputFormat在mapper中将多个文件合成一 个split作为输入,减少mapper数量,提高MapReduce任务的执行速度,且提高资源利用率。
[0009] 2.其他方法:
[0010] 现有的研究情况主要在两个场景下研究小文件的合并:(1)HDFS海量小文件存储 (2)MapReduce中小文件合并。Hadoop的自带功能中,Archi ve属于(1); SequenceFi le和 CombineFi lelnputFormat都属于(2),除此以外,本发明也是在(1)的场景下进行研究。 [0011]很多研究与本发明一样,将文件合并后,再上传到存储位置(如"李铁,《面向海量 小文件存取的HDFS优化研究》,东华大学学位论文,2015年"、发明专利"一种小文件处理方 法及装置"、发明专利"一种Hadoop存取海量小文件的优化方法"、发明专利"海量小文件分 级存储方法及系统"、"杨彬,"分布式文件系统HDFS处理小文件的优化方案",软件2014年第 35卷第6期,2014年"、发明专利"一种小文件的存储、查询及删除方法和系统"、发明专利"一 种集群存储中并行访问大量小文件的方法及系统李铁,"面向海量小文件存取的HDFS 优化研究",东华大学学位论文,2015年"设计了一个基于HDFS的中间件,在用户接口与HDFS 之间建立一个任务层,每个功能对应自己的缓冲区,将需要合并或删除的文件先暂时存入 各自的缓冲区中,当文件达到一定数量或过了一定时间,再统一对需要处理的一批文件进 行操作,然而这个方法不能将文件追加到已有的文件中,只能和新的文件一起合并。发明专 利"一种小文件处理方法及装置"将具有相同文件标识的文件组合在一起,将每个小文件的 索引关键值封装到文件块中,存入第一内存区中,与本发明不同的地方是,发明专利"一种 小文件处理方法及装置"进行文件查询时,将文件块整体读入第二内存区中,本发明不需要 将整个文件块读出。发明专利"一种集群存储中并行访问大量小文件的方法及系统"将小文 件存放在缓存中,根据文件大小,当缓存的小文件的大小的总和达到第一预设值时,将所述 缓存的小文件合并成一个临时文件,存放在缓存中。发明专利"海量小文件分级存储方法及 系统"与发明专利"一种集群存储中并行访问大量小文件的方法及系统"类似,采用存储池, 但不同的是发明专利"海量小文件分级存储方法及系统"中存储池是合并后的大文件的最 终存储位置。"杨彬,"分布式文件系统HDFS处理小文件的优化方案",软件2014年第35卷第6 期,2014年"将索引表放置在合并文件块开头,形成HDFS的扩展类型,用来记录合并块中每 个小文件的偏移位置;在NameNode中记录每个合并文件包含哪些块的信息,查询时通过文 件名称,就能查找到文件的具体位置。发明专利"一种小文件的存储、查询及删除方法和系 统"在上传前就将小文件合并为了大文件,大文件由索引区偏移量存储区域,小文件存储区 域以及小文件索引信息存储区域组成,且三个文件区域连续存放,当需要将小文件并入大 文件时,将小文件存入小文件存储区域后,需要将小文件索引信息存储区域向后偏移小文 件大小,这与本发明中三个部分是作为单独文件存在不同。

【发明内容】

[0012] 针对现有技术的不足,本发明提出分布式文件系统小文件合并的并行追加方法及 系统。
[0013] 本发明提出一种分布式文件系统小文件合并的并行追加方法,包括:
[0014] 将小文件上传到Memcache步骤,客户端上传的小文件到目标文件中,将所述小文 件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表 key_l ist上,所述表key_list存储在所述Memcache中,所述表key_l ist记录所述Memcache 中存储的所有小文件的key;
[0015] 小文件追加至lj目标大文件步骤,从所述Memcache中下载所述表key_list,根据所 述表key_l ist中所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一 个线性表,所述线性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相 对应的所述小文件合并。
[0016] 所述步骤1还包括当所述客户端上传所述小文件后,发出一个追加请求,将所述追 加请求放入请求队列request_queue中;
[0017] 从所述请求队列request_queue中取出所述追加请求,仓ij建一个线程处理所述追 加请求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,贝lj重 新进行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数 乃,若所述线程数c〇unt〈 =所述最大并发处理数未超过最大并发数,则将所述线程数 count加1,若所述线程数count〉所述最大并发处理数9.,.则不取出所述追加请求,当存在上 传文件的线程结束后再取出所述追加请求,并对所述追加请求进行处理。
[0018] 所述步骤1包括对当前线程加锁,使当前只有一个线程在修改所述表key_li st;从 所述Memcache下载所述表key_list;将所述key从尾部追加到所述表key_list里;将修改后 的所述表key_list上传到所述Memcache中;对所述当前线程解锁,并将所述线程数count减 1〇
[0019] 所述步骤2包括从所述Memcache下载所述表key_list,重命名为表key_l ist_ local;判断key_list是否为空,若所述表key_list为空,贝lj用变量T来记录时间,t时间后对 下一批小文件进行追加;否则创建空的表key_list,将其上传到所述Memcache中。
[0020] 所述步骤2包括:打开所述表key_list_l〇Cal,读取所述小文件的名称与所述目标 文件;将所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及以上 的小文件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。
[0021] 本发明还提出一种分布式文件系统小文件合并的并行追加系统,包括:
[0022] 上传模块,用于客户端上传的小文件到目标文件中,将所述小文件的名称作为 key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_l ist上,所 述表key_l i st存储在所述Memcache中,所述表key_l i st记录所述Memcache中存储的所有小 文件的key;
[0023] 合并模块,用于从所述Memcache中下载所述表key_l i st,根据所述表key_l i st中 所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线性表,所述线 性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应的所述小文 件合并。
[0024]所述上传模块还包括当所述客户端上传所述小文件后后,发出一个追加请求,将 所述追加请求放入请求队列request_queue中;
[0025] 从所述请求队列request_queue中取出所述追加请求,仓ij建一个线程处理所述追 加请求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,贝lj重 新进行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数 己,若所述线程数count〈 =所述最大并发处理数d,未超过最大并发数,则将所述线程数 count加1,若所述线程数count〉所述最大并发处理数则不取出所述追加请求,当存在上 传文件的线程结束后再取出所述追加请求,并对所述追加请求进行处理。
[0026]所述上传模块包括对当前线程加锁,使当前只有一个线程在修改所述表key_ 1 i st;从所述Memcache下载所述表key_l i st;将所述key从尾部追加到所述表key_l i st里; 将修改后的所述表key_l i st上传到所述Memcache中;对所述当前线程解锁,并将所述线程 数count减1。
[0027] 所述合并模块包括从所述Memcache下载所述表key_l i st,重命名为表key_l i st_ local;判断key_list是否为空,若所述表key_list为空,贝lj用变量T来记录时间,t时间后对 下一批小文件进行追加;否则创建空的表key_list,将其上传到所述Memcache中。
[0028]所述合并模块包括:打开所述表key_list_local,读取所述小文件的名称与所述 目标文件;将所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及 以上的小文件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。
[0029] 由以上方案可知,本发明的优点在于:
[0030] 本发明并行地向分布式文件系统的目标大文件中追加小文件,使小文件按类有序 存储,同时减少了NameNode中的元数据,减轻NameNode的压力;降低了上传时的10开销,使 追加小文件更加高效。
【附图说明】
[0031 ] 图1是文件上传 Memcache流程图;
[0032]图2是小文件追加到目标大文件图。
[0033]图3是访问小文件流程图。
【具体实施方式】
[0034]为了解决现有技术中存在的技术问题,本发明提出一种分布式文件系统小文件合 并的并行追加方法,包括:
[0035]将小文件上传到Memcache步骤,客户端上传的小文件到目标文件中,将所述小文 件的名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表 key_l ist上,所述表key_list存储在所述Memcache中,所述表key_l ist记录所述Memcache 中存储的所有小文件的key,memcache是一套分布式的高速缓存系统;
[0036] 小文件追加到目标大文件步骤,从所述Memcache中下载所述表key_list,根据所 述表key_l ist中所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一 个线性表,所述线性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相 对应的所述小文件合并。
[0037]所述步骤1还包括当所述客户端上传所述小文件后后,发出一个追加请求,将所述 追加请求放入请求队列request_queue中;
[0038] 从所述请求队列request_queue中取出所述追加请求,仓ij建一个线程处理所述追 加请求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,贝1J重 新进行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数 3 ,若所述线程数count〈 =所述最大并发处理数未超过最大并发数,则将所述线程数 count加1,若所述线程数count〉所述最大并发处理数9,,则不取出所述追加请求,当存在上 传文件的线程结束后再取出所述追加请求,并对所述追加请求进行处理。
[0039] 所述步骤1包括对当前线程加锁,使当前只有一个线程在修改所述表key_list;从 所述Memcache下载所述表key_list;将所述key从尾部追加到所述表key_list里;将修改后 的所述表key_list上传到所述Memcache中;对所述当前线程解锁,并将所述线程数count减 1〇
[0040] 所述步骤2包括从所述Memcache下载所述表key_list,重命名为表key_l ist_ local;判断key_list是否为空,若所述表key_list为空,贝lj用变量T来记录时间,t时间后对 下一批小文件进行追加;否则创建空的表key_list,将其上传到所述Memcache中。
[0041] 所述步骤2包括:打开所述表key_list_local,读取所述小文件的名称与所述目标 文件;将所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及以上 的小文件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。
[0042] 本发明还提出一种分布式文件系统小文件合并的并行追加系统,包括:
[0043] 上传模块,用于客户端上传的小文件到目标文件中,将所述小文件的名称作为 key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_l ist上,所 述表key_l i st存储在所述Memcache中,所述表key_l i st记录所述Memcache中存储的所有小 文件的key;
[0044] 合并模块,用于从所述Memcache中下载所述表key_l i st,根据所述表key_l i st中 所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线性表,所述线 性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应的所述小文 件合并。
[0045] 所述上传模块还包括当所述客户端上传所述小文件后后,发出一个追加请求,将 所述追加请求放入请求队列request_queue中;
[0046] 从所述请求队列request_queue中取出所述追加请求,仓ij建一个线程处理所述追 加请求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,贝1J重 新进行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数 乃,若所述线程数count〈 =所述最大并发处理数0,未超过最大并发数,则将所述线程数 count加1,若所述线程数count〉所述最大并发处理数9,.则不取出所述追加请求,当存在上 传文件的线程结束后再取出所述追加请求,并对所述追加请求进行处理。
[0047]所述上传模块包括对当前线程加锁,使当前只有一个线程在修改所述表key_ 1 i st;从所述Memcache下载所述表key_l i st;将所述key从尾部追加到所述表key_l i st里; 将修改后的所述表key_l i st上传到所述Memcache中;对所述当前线程解锁,并将所述线程 数count减1。
[0048] 所述合并模块包括从所述Memcache下载所述表key_l ist,重命名为表key_list_ local;判断key_list是否为空,若所述表key_list为空,贝lj用变量T来记录时间,t时间后对 下一批小文件进行追加;否则创建空的表key_list,将其上传到所述Memcache中。
[0049] 所述合并模块包括:打开所述表key_list_local,读取所述小文件的名称与所述 目标文件;将所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及 以上的小文件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。
[0050] 下面结合附图1,2,更进一步描述本发明步骤,如图1,2本发明追加文件的步骤包 含连续执行:A、上传文件到Memcache ;B、小文件追加到目标大文件。具体的一种实施方式如 下:
[0051] A.客户端将文件从本地上传到Memcache中,如图1所示,其实现方法为:
[0052] A1.用户在客户端界面,路径Pl选择需要的小文件h,名称为SrCl,并选择目标文件 desti,点击上传小文件fi;
[0053] A2.客户端点击上传后,会发出一个追加请求,将其放入请求队列request_queue 中;
[0054] A3.从request_queue中取出请求,仓ij建一个线程处理这个请求,分别执行以下步 骤:
[0055] A3-1:判断请求队列中是否是空的,有两种可能:1)不空,执行A3_2;2)为空,回到 A3-1;
[0056] A3-2:判断当前处理请求的线程数count是否小于最大并发处理数3。这里有两种 可能:1) count<= θ,未超过最大并发数,则将count加1,然后执行A4; 2) count>3,则不取 出请求,当有上传文件的线程结束后再取出请求,并对其进行处理。
[0057] A4.将fi名称srci作为key,将fi内容作为value,上传到Memcache中。
[0058] A5 .文件fi上传结束后,将key写到文件key_list上,文件key_list存储在 Memcache上,记录了 Memcache中存储的所有小文件的key。分别执行以下步骤:
[0059] A5-1:对当前线程加锁,使当前只有一个线程在修改key_list;
[0060] A5-2:将 key_l ist文件从 Memcache下载下来;
[0061 ] A5-3: f i的key是其文件名srci,从尾部追加到key_list里;
[0062] A5-4:将修改后的key_l ist 上传到Memcache 中;
[0063] A5-5:对当前线程解锁,并将count减1。
[0064] B.将小文件追加到HDFS上的大文件中,如图2所示,其实现方法为:
[0065] B1.得到key_list,并更新key_list文件;分别执行以下步骤:
[0066] B1-1:从Memcache下载key_list文件,重命名为key_list_local;
[0067] B1-2:判断key_list是否为空,有下面两种情况:l)key_list为空,则直接跳到B4; 2)key_list 不空,则执行 B1-3;
[0068] B1-3:创建一个空的key_l ist文件,将其上传到Memcache中。
[0069] B2.构建Hash表,用来记录相同目标文件desti的小文件的文件名srci;分别执行以 下步骤:
[0070] B2-1:打开key_list_local文件,读取每一条记录中的srci和desti;
[0071 ] B2-2:将desti作为hash值,将srci分别存入hash表中。当发生冲突时,即两个小文 件的desti相同时,则将其加入到对应的线性表后。
[0072] B3.将目标文件相同的小文件进行合并,也就是将相同hash地址后对应的线性表 中的小文件合并,再追加到目标文件后;分别执行以下步骤:
[0073] B3-1 :找到Θ个不空的hash项,创建Θ个线程;
[0074] B3-2:在每个线程中,读取相应hash项后面的线性表中的小文件,将这些小文件从 Memcache下载下来;
[0075] B3-3:将小文件合并为一个中文件fmi,并记录每个文件大小sizei;
[0076] B3-4:打开HDFS上的目标文件,计算part-x文件追加前的大小part_sizei,将fmi用 字节流的形式append到目标文件下的part-x文件后;
[0077] B3_5:_index是part-x文件的索引文件,记录了part-x中存储的每个文件的目录, 名称,权限,时间戳,起始偏移位置,大小等信息。记录_index文件修改前的大小index_ 8126_&6;^^ ;将81'(^作为文件名,?31'1:_8126作为起始偏移位置,81261作为大小,按照相应 的格式,将需要的信息写到_index文件后,并记录修改后_1]1(161文件的大小index_size_ after;
[0078] B3-6 :_masterindex文件是_index文件的索引文件,将index_size_before和 ;[11(161_812 6_3;1^61'分别作为;[11(161文件起始和结束偏移位置;按照_1]^8丨61';[11(161文件中记 录的格式,将相应信息追加到_masterindex后。
[0079] B4.用变量T来记录时间,t时间后处理下一批小文件追加。
[0080] 如图3,访问小文件,具体的实施方式如下:
[0081] C1.客户端发出访问请求,需要访问文件6,请求中包含文件名SrCl以及目标文件 名desti;
[0082] C2.从Memcache中的key_list文件上面用文件名查找该文件,执行的具体步骤如 下:
[0083] C2-1:下载 key_list 文件;
[0084] C2-2:在key_list文件中查找文件名srci,这里包含两种情况:l)key_list中包含 该文件,则根据srci从Memcache中取出该文件,并返回给客户端;2)不包含该文件,则执行 C3〇
[0085] C3.从目标文件desti中的_11^8七61';!_11(161和_;!_11(161中查找文件:^,并返回给客户端。
【主权项】
1. 一种分布式文件系统小文件合并的并行追加方法,其特征在于,包括: 将小文件上传到Memcache步骤,客户端上传的小文件到目标文件中,将所述小文件的 名称作为key,将所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_ 1 ist上,所述表key_l ist存储在所述Memcache中,所述表key_l ist记录所述Memcache中存 储的所有小文件的key; 小文件追加到目标大文件步骤,从所述Memcache中下载所述表key_l i st,根据所述表 key_list中所述小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线 性表,所述线性表中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应 的所述小文件合并。2. 如权利要求1所述的分布式文件系统小文件合并的并行追加方法,其特征在于,所述 步骤1还包括当所述客户端上传所述小文件后,发出一个追加请求,将所述追加请求放入请 求队列 request_queue 中; 从所述请求队列request_queue中取出所述追加请求,仓ij建一个线程处理所述追加请 求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,贝lj重新进 行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数0,若 所述线程数ccnmt〈 =所述最大并发处理数未超过最大并发数,则将所述线程数count加 1,若所述线程数count〉所述最大并发处理数乃,则不取出所述追加请求,当存在上传文件的 线程结束后再取出所述追加请求,并对所述追加请求进行处理。3. 如权利要求1或2所述的分布式文件系统小文件合并的并行追加方法,其特征在于, 所述步骤1包括对当前线程加锁,使当前只有一个线程在修改所述表key_list;从所述 Memcache下载所述表key_list;将所述key从尾部追加到所述表key_list里;将修改后的所 述表key_list上传到所述Memcache中;对所述当前线程解锁,并将所述线程数count减1。4. 如权利要求1所述的分布式文件系统小文件合并的并行追加方法,其特征在于,所述 步骤2包括从所述16111〇3〇116下载所述表1^7_1181:,重命名为表1^7_1181:_1〇〇31;判断1^7_ list是否为空,若所述表key_list为空,则用变量T来记录时间,t时间后对下一批小文件进 行追加;否则创建空的表key_list,将其上传到所述Memcache中。5. 如权利要求1或4所述的分布式文件系统小文件合并的并行追加方法,其特征在于, 所述步骤2包括:打开所述表key_l ist_local,读取所述小文件的名称与所述目标文件;将 所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及以上的小文 件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。6. -种分布式文件系统小文件合并的并行追加系统,其特征在于,包括: 上传模块,用于客户端上传的小文件到目标文件中,将所述小文件的名称作为key,将 所述小文件的内容作为value,上传到Memcache中,将所述key写到表key_l is t上,所述表 key_list存储在所述Memcache中,所述表key_list记录所述Memcache中存储的所有小文件 的 key; 合并模块,用于从所述Memcache中下载所述表key_l i st,根据所述表key_l i st中所述 小文件的名称与所述目标文件,构建Hash表,其中每个Hash值对应一个线性表,所述线性表 中储存所述小文件,如果所述目标文件相同,则将与所述目标文件相对应的所述小文件合 并。7. 如权利要求6所述的分布式文件系统小文件合并的并行追加系统,其特征在于,所述 上传模块还包括当所述客户端上传所述小文件后后,发出一个追加请求,将所述追加请求 放入请求队列request_queue中; 从所述请求队列request_queue中取出所述追加请求,仓ij建一个线程处理所述追加请 求,分别执行以下步骤:判断所述请求队列request_queue中是否是空的,若为空,贝lj重新进 行判断,否则判断当前处理的所述追加请求的线程数count是否小于最大并发处理数9,:若 所述线程数ccnmt〈 =所述最大并发处理数未超过最大并发数,则将所述线程数count加 1,若所述线程数count〉所述最大并发处理数则不取出所述追加请求,当存在上传文件的 线程结束后再取出所述追加请求,并对所述追加请求进行处理。8. 如权利要求6或7所述的分布式文件系统小文件合并的并行追加系统,其特征在于, 所述上传模块包括对当前线程加锁,使当前只有一个线程在修改所述表key_li st;从所述 Memcache下载所述表key_list;将所述key从尾部追加到所述表key_list里;将修改后的所 述表key_list上传到所述Memcache中;对所述当前线程解锁,并将所述线程数count减1。9. 如权利要求6所述的分布式文件系统小文件合并的并行追加系统,其特征在于,所述 合并模块包括从所述Memcache下载所述表key_list,重命名为表key_listjocal;判断 key_list是否为空,若所述表key_list为空,则用变量T来记录时间,t时间后对下一批小文 件进行追加;否则创建空的表key_list,将其上传到所述Memcache中。10. 如权利要求6或9所述的分布式文件系统小文件合并的并行追加系统,其特征在于, 所述合并模块包括:打开所述表key_l ist_local,读取所述小文件的名称与所述目标文件; 将所述目标文件作为hash值,将所述小文件的名称分别存入hash表中,当两个及以上的小 文件的目标文件相同时,则将所述两个及以上的小文件加入到对应的线性表后。
【文档编号】G06F17/30GK105868286SQ201610169389
【公开日】2016年8月17日
【申请日】2016年3月23日
【发明人】张笛, 孙毓忠, 宋 莹
【申请人】中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1