CN107463606B - 一种用于大数据存储系统的数据压缩引擎及方法 - Google Patents

一种用于大数据存储系统的数据压缩引擎及方法 Download PDF

Info

Publication number
CN107463606B
CN107463606B CN201710483336.1A CN201710483336A CN107463606B CN 107463606 B CN107463606 B CN 107463606B CN 201710483336 A CN201710483336 A CN 201710483336A CN 107463606 B CN107463606 B CN 107463606B
Authority
CN
China
Prior art keywords
file
small
files
heat level
small files
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.)
Active
Application number
CN201710483336.1A
Other languages
English (en)
Other versions
CN107463606A (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.)
Zhejiang Lishi Technology Co Ltd
Original Assignee
Zhejiang Lishi Technology Co Ltd
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 Zhejiang Lishi Technology Co Ltd filed Critical Zhejiang Lishi Technology Co Ltd
Priority to CN201710483336.1A priority Critical patent/CN107463606B/zh
Publication of CN107463606A publication Critical patent/CN107463606A/zh
Application granted granted Critical
Publication of CN107463606B publication Critical patent/CN107463606B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/113Details of archiving
    • 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/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • 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)
  • Information Transfer Between Computers (AREA)

Abstract

本发明提出一种用于大数据存储系统的数据压缩引擎及方法,针对HDFS系统中海量小文件,判定各个小文件所属的访问热度等级,设置与各个访问热度等级相对应的元数据表副本机制及检索进程数机制;其中,对于高热度等级的小文件不予以合并和压缩;对于中等热度等级的小文件引入合并处理,不予以压缩;对于低热度等级的小文件引入合并与压缩处理,并且将同源的小文件合并为一个更大的文件结构并进行数据压缩。另外,本发明会针对高热度等级的小文件建立常驻的访问任务,从而避免了访问任务频繁开设和回收所带来的低效现象。

Description

一种用于大数据存储系统的数据压缩引擎及方法
技术领域
本发明涉及一种大数据应用技术,尤其涉及一种用于大数据存储系统的数据压缩引擎及方法。
背景技术
Hadoop是一种基于分布式计算机集群进行高速运算和数据存储的体系架构,是当前各种网络服务商在执行海量级大数据的汇集和分析时选用的主流平台。
HDFS是一种分布式文件系统,可在计算机集群之上进行构建,提供可靠性强、低成本、高传输率的数据存储、访问和管理功能,可以容纳海量级大数据,并支撑以此等规模的数据量为基础的网络应用,是Hadoop体系当中不可或缺的重要组成部分。
HDFS采用的体系架构和操作流程如图1A-B所示。HDFS以数据流的形式执行存取,并且支持一次写入之后的多次读取。在存储数据的过程中,HDFS系统集群中的客户端节点1向名称节点2发送写文件请求;名称节点2向客户端1返回至少一个可用数据节点3的信息;进而,客户端节点1将待写入的文件拆分为分块,每个分块的大小默认为64M,文件数据可以占据一整个分块或者是分块的一部分;客户端节点1将待写入文件的各个分块以数据流的形式并行地发送至可用数据节点3进行存储;发送完成后,客户端节点1向名称节点2提交为该写入文件登记元数据的请求;名称节点2收到该请求后与数据节点3进行确认,然后,名称节点2中建立元数据,元数据中存储了该写入文件的文件标识符、写入文件对应的各个分块的分块标识符以及各个分块所在的数据节点的网络地址。在访问数据过程中,如图1B所示,客户端节点1向名称节点2发送读取文件请求;名称节点2搜索元数据,获得待读取文件对应的各个分块的分块标识符,以及获得这些分块所在的数据节点3的网络地址;名称节点2将分块标识符以及分块所在数据节点的网络地址发送给客户端节点1;客户端节点1与具有待读取文件的分块的数据节点3建立连接,并以数据流的形式获取分块。
HDFS主要是面向具有数百MB、GB甚至TM数据规模的文件所设计的一套分布式存储系统。HDFS架构并不适合小文件的存取,这里所谓“小文件”是指该文件的数据量小于分块的默认大小64M。如果HDFS系统中存在的小文件的数量过多,就会给该系统的性能带来巨大的不良影响。原因在于:第一,名称节点2中为每个文件(不论其大小)所建立的元数据均至少占据固定的150byte的空间;显然,如果存在成千上万计的小文件,由小文件产生的元数据会大量消耗名称节点2的可用存储空间;而且,名称节点2串行检索各个元数据以查询待读取文件涉及的分块,由小文件产生的过多元数据会给检索带来很大的困难。第二,如果客户端节点需要访问大量的小文件,那就要不断从一个数据节点3到另一个数据节点3去获得各个小文件的分块,这一过程会消耗大量系统资源。第三,HDFS系统在读取数据时,为每个文件开设一个访问任务并分配相应的资源,显然,如果对每个小文件的读取都占用一个访问任务,那么大部分时间都将用于开设和收回小文件的访问任务,而真正用于读取数据的时间却没有多少。
在实际的各种网络服务当中,小文件是广泛存在于基于HDFS的大数据存储体系当中的。例如,各种网站中的图片文件、注册用户的个人信息登记文件、网上购物的单个订单记录等,其一般均不超过HDFS当中为一个块所设定的64M的大小。因此,克服海量小文件给基于HDFS架构的大数据存储系统所带来的效率严重降低,是实际应用当中必须解决的问题。
现有技术中为了解决HDFS体系中过多小文件所带来的问题,常用的手段是引入小文件合并为更大文件的机制,可供选择的是HAR以及Sequence file技术。HAR技术是Hadoop自带的小文件解决机制,其将多个小文件打包为一个HAR文件,然后针对该HAR文件执行向数据节点的写入以及名称节点上的元数据记录。但是,HAR文件自身不支持数据压缩,而且HAR文件不支持修改,一旦要删除其中部分小文件或向HAR文件中增加小文件,就必须新建HAR文件。Sequence file技术是将批量的小文件存入一个Sequence file当中,Sequencefile由key/value二维数据结构组成,key表示存入的各个小文件的文件名,value表示各个小文件的内容。Sequence file是支持分割处理机制的,而且Sequence file也支持数据压缩。一般使小文件合并而来的HAR文件或Sequence file作为HDFS当中的一个分块,然后存入数据节点。
事实上,在HDFS体系中加入数据压缩的过程是非常有利的,实践表明通过压缩可以节约数据节点50%左右的存储空间。特别是在针对小文件的合并机制中,通过结合数据压缩可以使一个合并后的更大文件结构当中包含更多的小文件,从而进一步削减了小文件的数量。
然而,数据压缩过程也会使得HDFS体系下对文件读写的运算量加大,响应速度变慢,有时候这种不利影响还会体现得非常明显。首先,在文件写入过程中,小文件合并后的Sequence file等文件结构要经过压缩运算,这必然会延长操作时间。另一方面,在读取文件的过程中,数据节点要先对分块中的压缩文件进行解压缩运算,然后从解压所得的Sequence file等大文件结构中检索客户端节点所请求的小文件,这就延迟了客户端节点真正取得小文件内容的时间。另外,小文件合并处理虽然显著缩减了名称节点处的元数据量和查询负荷,但是客户端节点访问每个所需小文件仍然需要经历一个访问任务的全过程,该访问任务仍然要占用必需的资源,并且解压缩运算进一步增长了该访问任务对资源的占用周期。
可见,现有技术中通过文件合并处理+压缩运算的方式应对HDFS体系中小文件过量带来的效率低下问题,能够充分减少小文件的数量,缓解名称节点的负荷,但是也造成写入和读取运算量负担的加剧,使得从建立到收回访问任务的过程消耗更多资源,降低了客户端节点对所需小文件内容获取的及时性。
发明内容
鉴于上述现有技术中存在的以上问题,本发明提出一种用于大数据存储系统的数据压缩引擎及方法。本发明针对HDFS系统中海量小文件的压缩存储而设计,统计客户端节点对小文件的访问请求,判定各个小文件所属的访问热度等级;在名称节点中设置与各个访问热度等级相对应的元数据表副本机制及检索进程数机制;其中,对于高热度等级的小文件不予以合并和压缩;对于中等热度等级的小文件引入合并处理,不予以压缩;对于低热度等级的小文件引入合并与压缩处理,并且将同源的小文件合并为一个更大的文件结构并进行数据压缩。根据访问热度变化,本发明会对小文件的合并与压缩定期给予重新安排。另外,本发明会针对高热度等级的小文件建立常驻的访问任务,从而避免了访问任务频繁开设和回收所带来的低效现象。
本发明提供了一种用于大数据存储系统的数据压缩引擎,其特征在于,包括:
请求识别单元,对于大数据存储系统的任何一个客户端节点提出的写入请求或访问请求,判断该写入请求或访问请求针对的文件是否为小文件;如果是小文件则将所述写入请求转至小文件分配管理单元,将所述访问请求转至访问请求响应单元;
小文件分配管理单元,根据请求识别单元转来的所述写入请求,将待上传的小文件分配给大数据存储系统下的数据节点集群当中的一个或多个固定的新增小文件接收数据节点;向提出写入请求的客户端节点返回被分配的新增小文件接收数据节点的信息,以便该客户端节点将该小文件作为一个分块发送至该新增小文件接收数据节点进行存储;并且维护一个新增小文件元数据表,为该小文件在该表中登记一个新建的元数据项;
并且,小文件分配管理单元还用于维护高热度等级元数据表、中等热度等级元数据表和低热度等级元数据表;对于在新增小文件元数据表中登记并且由新增小文件接收数据节点存储的新增小文件,根据访问请求热度统计单元确定的该新增小文件的访问热度等级属于高热度等级、中等热度等级还是低热度等级,在相应热度等级对应的元数据表中为该小文件建立和维持元数据项;并且,向新增小文件接收数据节点下达指令,将该小文件传输给被分配存储该小文件的数据节点;其中,对于高热度等级的小文件,被分配存储该小文件的数据节点将其作为一个单独的分块进行存储;对于中等热度等级的小文件,将其合并为Sequence file等更大的文件结构,然后由被分配存储该合并的文件结构的数据节点进行存储;对于低热度等级的小文件,将其合并为Sequence file等更大的文件结构,并且对该文件结构进行数据压缩处理,然后由被分配存储该合并且压缩的文件结构的数据节点进行存储;
访问请求热度统计单元,用于统计大数据存储系统下的每个小文件在单位时间内被全部客户端节点所请求访问的次数,根据该次数判定各个小文件所属的访问热度等级属于高热度等级、中等热度等级还是低热度等级;将所述访问热度等级传输给小文件分配管理单元;
访问请求响应单元,响应请求识别单元转来的访问请求,为该访问请求创建一个访问任务,根据该访问请求提供的小文件标识符查询高热度等级元数据表、中等热度等级元数据表和低热度等级元数据表,确定该小文件所在的文件、分块及其数据节点的网络地址,向提出该访问请求的客户端节点反馈以上信息。
优选的是,在对低热度等级的小文件进行合并且压缩的过程中,选取一定数量的同源的小文件,合并为Sequence file等更大的文件结构。
优选的是,所述访问请求热度统计单元持续性地统计监测所有客户端节点对于所有小文件的访问请求,更新所有小文件的访问热度等级,并将小文件访问热度等级的变化通知所述小文件分配管理单元;并且,
响应原属于低热度等级的小文件变更为高热度等级,小文件分配管理单元从合并且压缩后的文件结构当中解压缩并分离出该小文件内容,作为一个独立的分块,存储于该数据节点上,并且更新高热度等级元数据表;
响应原属于低热度等级的小文件变更为中等热度等级,小文件分配管理单元从合并且压缩后的文件结构当中解压缩并分离出该小文件内容,作为一个独立的分块,存储于该数据节点上,当该数据节点上以独立分块形式存在的中等热度等级的小文件积累到一定数量,则可以将这些小文件合并为一个Sequence file等更大的文件结构;并且更新中等热度等级元数据表;
响应原属于高热度等级的小文件变更为中等热度等级或者低热度等级,小文件分配管理单元向存储该小文件的分块的数据节点发出指令,通知该数据节点此以独立分块形式存在的小文件已经允许被合并,或已经允许被合并且压缩;当该数据节点上允许被合并、或允许被合并且压缩的以独立分块形式存在的小文件积累到一定数量,则可以将这些小文件合并为一个Sequence file等更大的文件结构,或者合并为更大的文件结构并且对该文件结构执行压缩运算;并且更新中等热度等级元数据表或低热度等级元数据表。
优选的是,针对高热度等级的小文件,访问请求响应单元建立常驻的访问任务。
优选的是,小文件分配管理单元在名称节点中设置与各个访问热度等级相对应的元数据表副本数量及检索进程数量。
本发明进而提供了一种用于大数据存储系统的数据压缩方法,其特征在于,包括:
请求识别步骤,对于大数据存储系统的任何一个客户端节点提出的写入请求或访问请求,判断该写入请求或访问请求针对的文件是否为小文件;如果是小文件则将所述写入请求转至小文件分配管理步骤,将所述访问请求转至访问请求响应步骤;
小文件分配管理步骤,根据转来的所述写入请求,将待上传的小文件分配给大数据存储系统下的数据节点集群当中的一个或多个固定的新增小文件接收数据节点;向提出写入请求的客户端节点返回被分配的新增小文件接收数据节点的信息,以便该客户端节点将该小文件作为一个分块发送至该新增小文件接收数据节点进行存储;并且维护一个新增小文件元数据表,为该小文件在该表中登记一个新建的元数据项;
并且,小文件分配管理步骤还包括:维护高热度等级元数据表、中等热度等级元数据表和低热度等级元数据表;对于在新增小文件元数据表中登记并且由新增小文件接收数据节点存储的新增小文件,根据访问请求热度统计单元确定的该新增小文件的访问热度等级属于高热度等级、中等热度等级还是低热度等级,在相应热度等级对应的元数据表中为该小文件建立和维持元数据项;并且,向新增小文件接收数据节点下达指令,将该小文件传输给被分配存储该小文件的数据节点;其中,对于高热度等级的小文件,被分配存储该小文件的数据节点将其作为一个单独的分块进行存储;对于中等热度等级的小文件,将其合并为Sequence file等更大的文件结构,然后由被分配存储该合并的文件结构的数据节点进行存储;对于低热度等级的小文件,将其合并为Sequence file等更大的文件结构,并且对该文件结构进行数据压缩处理,然后由被分配存储该合并且压缩的文件结构的数据节点进行存储;
访问请求热度统计步骤,用于统计大数据存储系统下的每个小文件在单位时间内被全部客户端节点所请求访问的次数,根据该次数判定各个小文件所属的访问热度等级属于高热度等级、中等热度等级还是低热度等级;
访问请求响应步骤,响应转来的访问请求,为该访问请求创建一个访问任务,根据该访问请求提供的小文件标识符查询高热度等级元数据表、中等热度等级元数据表和低热度等级元数据表,确定该小文件所在的文件、分块及其数据节点的网络地址,向提出该访问请求的客户端节点反馈以上信息。
优选的是,在对低热度等级的小文件进行合并且压缩的过程中,选取一定数量的同源的小文件,合并为Sequence file等更大的文件结构。
优选的是,所述访问请求热度统计步骤中,持续性地统计监测所有客户端节点对于所有小文件的访问请求,更新所有小文件的访问热度等级;所述小文件分配管理步骤根据访问热度等级的变化对小文件进行重排,包括:
响应原属于低热度等级的小文件变更为高热度等级,从合并且压缩后的文件结构当中解压缩并分离出该小文件内容,作为一个独立的分块,存储于该数据节点上,并且更新高热度等级元数据表;
响应原属于低热度等级的小文件变更为中等热度等级,从合并且压缩后的文件结构当中解压缩并分离出该小文件内容,作为一个独立的分块,存储于该数据节点上,当该数据节点上以独立分块形式存在的中等热度等级的小文件积累到一定数量,则可以将这些小文件合并为一个Sequence file等更大的文件结构;并且更新中等热度等级元数据表;
响应原属于高热度等级的小文件变更为中等热度等级或者低热度等级,向存储该小文件的分块的数据节点发出指令,通知该数据节点此以独立分块形式存在的小文件已经允许被合并,或已经允许被合并且压缩;当该数据节点上允许被合并、或允许被合并且压缩的以独立分块形式存在的小文件积累到一定数量,则可以将这些小文件合并为一个Sequence file等更大的文件结构,或者合并为更大的文件结构并且对该文件结构执行压缩运算;并且更新中等热度等级元数据表或低热度等级元数据表。
优选的是,访问请求响应步骤中,针对高热度等级的小文件,建立常驻的访问任务。
优选的是,。
可见,本发明提供的数据压缩引擎系统及其方法按照访问请求热度等级,对小文件施以不同的处理,高热度等级的小文件以独立分块在HDFS体系中存储和等级,保障了客户端对这些小文件获取低延迟;同时,对中等热度等级和低热度等级的小文件进行合并、或者合并且压缩,从总体上降低了HDFS体系小文件的总数量,有利于缓解名称节点的负荷。本发明还进一步完善了访问任务机制,并且对于由名称节点负责的元数据建立了适当数量的副本机制,进一步提升了针对小文件的查询响应速度。
说明书附图
图1A-1B是现有技术中HDFS系统架构以及写入和读取文件过程的示意图;
图2是本发明提供的HDFS体系下的数据压缩引擎系统结构示意图。
具体实施方式
下面通过实施例,对本发明的技术方案做进一步具体的说明。
图2是本发明提供的HDFS体系下的数据压缩引擎系统结构示意图。如图2所示,实现分布式文件大数据存储的HDFS体系包括:客户端节点1、名称节点2、数据节点3-1、3-2......3-N。被存储的数据作为文件,被上传该文件的客户端节点1拆分为分块,每个分块的大小默认为64M,以分块为单位存入该HDFS体系的数据节点3-1、3-2......3-N中的至少一个数据节点。名称节点2为每个文件登记一个元数据项,元数据中存储了该文件的文件标识符、该文件对应的各个分块的分块标识符以及各个分块所在的数据节点的网络地址。在访问数据过程中,由要求访问某文件的客户端节点1向名称节点2发出访问请求;名称节点2通过搜索元数据,获得该文件对应的各个分块的分块标识符,以及这些分块所在的数据节点3的网络地址;名称节点2将分块标识符以及分块所在数据节点的网络地址发送给客户端节点1;客户端节点1与具有该文件的各个分块的数据节点3建立连接,并以数据流的形式获取分块。
本发明的数据压缩引擎系统主要是针对HDFS系统中海量小文件的存储与访问而设计的。小文件的概念背景技术中已经介绍过,是数据量小于HDFS系统为一个分块所设定的64M大小的文件。
如图2所示,本发明的数据压缩引擎系统包括设置在名称节点2当中的请求识别单元201。当收到任何一个客户端节点1上传文件的写入请求时,请求识别单元201根据该写入请求携带的表示文件数据量大小的参数值,判断待上传的文件是否为小文件。如果写入请求所针对的不是小文件,则请求识别单元201将该写入请求转至名称节点2通用的响应机制,向该客户端节点1反馈可用的数据节点,以便客户端节点1将文件拆分为分块后并行传输给可用的数据节点,以及由名称节点2为该文件建立元数据。如果写入请求所针对的是小文件,则请求识别单元201将该写入请求转至本发明数据压缩引擎系统进行处理。
同样,当收到由任何一个客户端节点1发来的对HDFS系统中存储的某文件的访问请求时,该请求识别单元201通过利用访问请求包含的文件名来查询元数据,判断该访问请求针对的文件是否为小文件。如果访问请求所针对的不是小文件,则请求识别单元201将该访问请求转至名称节点2中通用的响应机制,最终向客户端节点1反馈该文件的分块标识符以及分块所在数据节点的网络地址。如果访问请求所针对的是某个小文件,则请求识别单元201将该访问请求转至本发明数据压缩引擎系统进行处理。
该数据压缩引擎系统包括在名称节点2当中设置的小文件分配管理单元202。在收到请求识别单元201转来的某客户端节点1对某个小文件的写入请求之后,小文件分配管理单元202将该待上传的小文件分配给数据节点3-1、3-2......3-N集群当中的一个或多个固定的新增小文件接收数据节点,如图2中的数据节点3-1。小文件分配管理单元202向拟上传该小文件的客户端节点1返回新增小文件接收数据节点3-1的信息。进而,客户端节点1将该小文件包装为一个分块,发送至新增小文件接收数据节点3-1进行存储。并且,小文件分配管理单元202维护一个新增小文件元数据表,在该新增小文件元数据表中登记该上传给数据节点3-1的小文件的文件标识符、对应的分块标识符以及存储该小文件分块的数据节点3-1的网络地址,作为该表中的一个新建的元数据项。
名称节点2当中设置的访问请求热度统计单元203获得由请求识别单元201转来的所有客户端节点1对于各个小文件的访问请求,并且统计每个小文件在单位时间内被请求访问的次数,例如在距当前时刻24小时以内每个小文件被请求访问的次数。进而,访问请求热度统计单元203根据该次数判定各个小文件所属的访问热度等级,例如,单位时间内被请求访问次数高于第一次数阈值的小文件被判定属于高热度等级;单位时间内被请求访问次数低于第一次数阈值但高于第二次数阈值的小文件被判定属于中等热度等级;单位时间内被请求访问次数低于第二次数阈值的小文件被判定属于低热度等级。访问请求热度统计单元203将全部小文件的访问热度等级传输给小文件分配管理单元202。
小文件分配管理单元202除了负责维护前文所述的新增小文件元数据表以外,还负责创建和维护各个访问热度等级相对应的元数据表。也即,小文件分配管理单元202创建高热度等级元数据表、中等热度等级元数据表和低热度等级元数据表。
对于在新增小文件元数据表中登记并且由新增小文件接收数据节点存储的新增小文件,在经过单位时间之后,通过访问请求热度统计单元203统计了在该单位时间上这些小文件的访问热度等级。进而,由小文件分配管理单元202对这些小文件进行基于访问热度等级的分配。
其中,对于被判定属于高热度等级的小文件,小文件分配管理单元202在所述高热度等级元数据表当中为该小文件建立和维持元数据项,元数据项中记录该小文件的文件标识符、对应的分块标识符以及被分配存储该小文件分块的数据节点的网络地址。并且,小文件分配管理单元202向新增小文件接收数据节点3-1下达指令,将该小文件的分块传输给被分配存储该小文件的数据节点,例如数据节点3-2,然后在新增小文件接收数据节点3-1上删除该小文件的分块。并且,小文件分配管理单元202向被分配存储该小文件分块的数据节点3-2下达指令,使该数据节点将该小文件作为一个单独的分块进行存储,不与其他小文件合并,也不对该小文件进行任何数据压缩处理。
对于新增小文件接收数据节点3-1上被判定属于中等热度等级的小文件,小文件分配管理单元202向新增小文件接收数据节点3-1下达合并指令,将这些中等热度等级的小文件合并为Sequence file等更大的文件结构,但不对该文件结构进行压缩,合并后的文件结构占用一个分块,且数据量大小尽量接近一个分块的大小64M。小文件分配管理单元202在所述中等热度等级元数据表当中为合并的文件结构建立和维持元数据项,元数据项中记录该合并的文件结构的文件标识符、该文件结构中包含的小文件名、对应的分块标识符以及被分配存储该合并文件结构的分块的数据节点-如数据节点3-3-的网络地址。小文件分配管理单元202向新增小文件接收数据节点3-1下达指令,将该合并后的文件结构的分块传输给被分配存储该分块的数据节点,例如数据节点3-3,然后在新增小文件接收数据节点3-1上删除合并后的文件结构。并且,小文件分配管理单元202向被分配存储该合并文件结构的分块的数据节点3-3下达指令,使该数据节点不对该分块进行任何数据压缩处理,直接予以存储。
对于新增小文件接收数据节点3-1上被判定属于低热度等级的小文件,小文件分配管理单元202向新增小文件接收数据节点3-1下达合并和压缩指令,将这些低热度等级的小文件合并为Sequence file等更大的文件结构,并且对该文件结构进行数据压缩,合并且压缩之后的文件结构占用一个分块,且数据量大小尽量接近一个分块的大小64M。小文件分配管理单元202在所述低热度等级元数据表当中为合并且压缩后的文件结构建立和维持元数据项,元数据项中记录该合并且压缩后的文件结构的文件标识符、该文件结构中包含的小文件名、对应的分块标识符以及被分配存储该合并和压缩后的文件结构的分块的数据节点-如数据节点3-4-的网络地址。小文件分配管理单元202向新增小文件接收数据节点3-1下达指令,将该合并且压缩后的文件结构的分块传输给被分配存储该分块的数据节点,例如数据节点3-4,然后在新增小文件接收数据节点3-1上删除合并且压缩后的文件结构。
其中,在将低热度等级的小文件合并和压缩的过程中,新增小文件接收数据节点3-1具有小文件合并单元301,负责执行对小文件的选取和合并。其中,小文件合并单元301从新增小文件接收数据节点3-1上的新增小文件中,选取一定数量的同源的小文件,合并为一个更大的文件结构,然后予以压缩。同源的小文件指的是来自同一个数据源的小文件,例如,同一张网页上的若干个图片,或者是同一个用户在同一网站的网上购物订单,等等。如前文所述,当需要对合并且压缩后的文件结构当中包含的某个小文件内容进行访问时,需要对该压缩后的文件结构进行解压缩运算,解压缩运算会增加运算量和延迟时间。一般来说,用户对同源的小文件同时予以访问或在较短时间间隔上相继予以访问的概率比较高。因此,如果将同源的小文件合并且压缩为一个文件结构,作为分块存储在同一个数据节点上,则在后续访问过程中,通过一次解压缩运算,就具有很大可能性可以满足用户同时性或接续性的对若干小文件的访问需求。而且,将同源的小文件以合并且压缩的文件结构存储在一个数据节点上,客户端节点通过与一个数据节点通信就可以具有很大可能性满足用户同时性或接续性的对若干小文件的访问需求,也就在很大程度上避免了客户端节点一个接一个地访问很多的数据节点来获取所需的小文件。
对于新增小文件,根据单位时间上访问请求的次数,本发明将其划分为不同的热度等级,并施以不同的存储机制。但是,随着时间的推移,小文件的访问热度会发生改变,高热度等级的小文件的访问热度有可能降低,低热度等级的小文件的访问热度有可能升高为中等热度等级甚至高热度等级。因此,根据访问热度变化,本发明会对小文件的合并与压缩定期给予重新安排。
具体来说,访问请求热度统计单元203持续性地统计监测所有客户端节点1对于所有小文件(包括已经合并的小文件内容、已经合并且压缩的小文件内容)的访问请求,更新所有小文件的访问热度等级。其中,如果某个原属于低热度等级的小文件变更为高热度等级,则访问请求热度统计单元203将这一热度等级变化消息通知小文件分配管理单元202;小文件分配管理单元202向存储含有该小文件内容的合并且压缩后的文件结构的数据节点发出指令,控制该数据节点从合并且压缩后的文件结构当中解压缩并分离出该小文件内容,作为一个独立的分块,存储于该数据节点上。并且,小文件分配管理单元202更新高热度等级元数据表、低热度等级元数据表,其中在高热度等级元数据表的元数据项中记录该变更了的小文件的文件标识符、对应的分块标识符以及被分配存储该小文件分块的数据节点的网络地址。
如果某个原属于低热度等级的小文件变更为中等热度等级,则访问请求热度统计单元203将这一热度等级变化消息通知小文件分配管理单元202;小文件分配管理单元202向存储含有该小文件内容的合并且压缩后的文件结构的数据节点发出指令,控制该数据节点从合并且压缩后的文件结构当中解压缩并分离出该小文件内容,作为一个独立的分块,存储于该数据节点上;当该数据节点上以独立分块形式存在的中等热度等级的小文件积累到一定数量,则可以将这些小文件合并为一个Sequence file等更大的文件结构;并且,相应地更新中等热度等级元数据表、低热度等级元数据表。
其中,如果某个原属于高热度等级的小文件变更为中等热度等级或者低热度等级,则访问请求热度统计单元203将这一热度等级变化消息通知小文件分配管理单元202;小文件分配管理单元202向存储该小文件的分块的数据节点发出指令,通知该数据节点此小文件的分块已经允许被合并,或已经允许被合并且压缩。当该数据节点上允许被合并、或允许被合并且压缩的以独立分块形式存在的小文件积累到一定数量,则可以将这些小文件合并为一个Sequence file等更大的文件结构,或者合并为更大的文件结构并且对该文件结构执行压缩运算。并且,小文件分配管理单元202更新高热度等级元数据表、中等热度等级元数据表或低热度等级元数据表,其中在中等热度等级元数据表或低热度等级元数据表的元数据项中记录该变更了的文件标识符、该文件结构中包含的小文件名、对应的分块标识符以及存储该文件的数据节点的网络地址。
在访问小文件时,根据请求识别单元201转来的访问请求,名称节点2的访问请求响应单元204为该访问请求创建一个访问任务,根据该访问请求提供的小文件标识符查询高热度等级元数据表、中等热度等级元数据表和低热度等级元数据表,确定该小文件所在的文件、分块及其数据节点的网络地址。进而,访问请求响应单元204向提出该访问请求的客户端节点1反馈以上信息,以便该客户端节点1与具有该小文件的数据节点建立连接以便获取该小文件内容。
针对高热度等级的小文件,访问请求响应单元204建立常驻的访问任务,该访问任务不需要创建和回收,而是固定占用资源,专门用于针对高热度等级小文件的访问请求进行查询和反馈,从而避免了访问任务频繁开设和回收所带来的低效现象。
而且,对于高热度等级元数据表,其被查询的频次远远高于中等热度等级元数据表;中等热度等级元数据表的被查询频次又远远高于低热度等级元数据表。因此,小文件分配管理单元202在名称节点2中设置与各个访问热度等级相对应的元数据表副本机制及检索进程数机制。具体来说,小文件分配管理单元202为高热度等级元数据表建立数量最多的副本,并且开设最多数量的并行查询进程,来响应各个访问任务对高热度等级元数据表及其各个副本的查询。小文件分配管理单元202为中等热度等级元数据表建立的副本数量少于高热度等级元数据表,并且为中等热度等级元数据表开设的并行查询进程也少于高热度等级元数据表。小文件分配管理单元202为低热度等级元数据表建立的副本以及开设的并行查询进程的数量最少。
可见,本发明提供的数据压缩引擎系统及其方法按照访问请求热度等级,对小文件施以不同的处理,高热度等级的小文件以独立分块在HDFS体系中存储和等级,保障了客户端对这些小文件获取低延迟;同时,对中等热度等级和低热度等级的小文件进行合并、或者合并且压缩,从总体上降低了HDFS体系小文件的总数量,有利于缓解名称节点的负荷。本发明还进一步完善了访问任务机制,并且对于由名称节点负责的元数据建立了适当数量的副本机制,进一步提升了针对小文件的查询响应速度。
以上实施例仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

Claims (10)

1.一种用于大数据存储系统的数据压缩引擎系统,其特征在于,包括:
请求识别单元,对于大数据存储系统的任何一个客户端节点提出的写入请求或访问请求,判断该写入请求或访问请求针对的文件是否为小文件;如果是小文件则将所述写入请求转至小文件分配管理单元,将所述访问请求转至访问请求响应单元;
小文件分配管理单元,根据请求识别单元转来的所述写入请求,将待上传的小文件分配给大数据存储系统下的数据节点集群当中的一个或多个固定的新增小文件接收数据节点;向提出写入请求的客户端节点返回被分配的新增小文件接收数据节点的信息,以便该客户端节点将该小文件作为一个分块发送至该新增小文件接收数据节点进行存储;并且维护一个新增小文件元数据表,为该小文件在该表中登记一个新建的元数据项;
并且,小文件分配管理单元还用于维护高热度等级元数据表、中等热度等级元数据表和低热度等级元数据表;对于在新增小文件元数据表中登记并且由新增小文件接收数据节点存储的新增小文件,根据访问请求热度统计单元确定的该新增小文件的访问热度等级属于高热度等级、中等热度等级还是低热度等级,在相应热度等级对应的元数据表中为该小文件建立和维持元数据项;并且,向新增小文件接收数据节点下达指令,将该小文件传输给被分配存储该小文件的数据节点;其中,对于高热度等级的小文件,被分配存储该小文件的数据节点将其作为一个单独的分块进行存储;对于中等热度等级的小文件,将其合并为Sequence file更大的文件结构,然后由被分配存储该合并的文件结构的数据节点进行存储;对于低热度等级的小文件,将其合并为Sequence file更大的文件结构,并且对该文件结构进行数据压缩处理,然后由被分配存储该合并且压缩的文件结构的数据节点进行存储;
访问请求热度统计单元,用于统计大数据存储系统下的每个小文件在单位时间内被全部客户端节点所请求访问的次数,根据该次数判定各个小文件所属的访问热度等级属于高热度等级、中等热度等级还是低热度等级;将所述访问热度等级传输给小文件分配管理单元;
访问请求响应单元,响应请求识别单元转来的访问请求,为该访问请求创建一个访问任务,根据该访问请求提供的小文件标识符查询高热度等级元数据表、中等热度等级元数据表和低热度等级元数据表,确定该小文件所在的文件、分块及其数据节点的网络地址,向提出该访问请求的客户端节点反馈以上信息。
2.根据权利要求1所述的数据压缩引擎系统,其特征在于,在对低热度等级的小文件进行合并且压缩的过程中,选取一定数量的同源的小文件,合并为Sequence file更大的文件结构。
3.根据权利要求2所述的数据压缩引擎系统,其特征在于,所述访问请求热度统计单元持续性地统计监测所有客户端节点对于所有小文件的访问请求,更新所有小文件的访问热度等级,并将小文件访问热度等级的变化通知所述小文件分配管理单元;并且,
响应原属于低热度等级的小文件变更为高热度等级,小文件分配管理单元从合并且压缩后的文件结构当中解压缩并分离出该小文件内容,作为一个独立的分块,存储于该数据节点上,并且更新高热度等级元数据表;
响应原属于低热度等级的小文件变更为中等热度等级,小文件分配管理单元从合并且压缩后的文件结构当中解压缩并分离出该小文件内容,作为一个独立的分块,存储于该数据节点上,当该数据节点上以独立分块形式存在的中等热度等级的小文件积累到一定数量,则可以将这些小文件合并为一个Sequence file更大的文件结构;并且更新中等热度等级元数据表;
响应原属于高热度等级的小文件变更为中等热度等级或者低热度等级,小文件分配管理单元向存储该小文件的分块的数据节点发出指令,通知该数据节点此以独立分块形式存在的小文件已经允许被合并,或已经允许被合并且压缩;当该数据节点上允许被合并、或允许被合并且压缩的以独立分块形式存在的小文件积累到一定数量,则可以将这些小文件合并为一个Sequence file更大的文件结构,或者合并为更大的文件结构并且对该文件结构执行压缩运算;并且更新中等热度等级元数据表或低热度等级元数据表。
4.根据权利要求3所述的数据压缩引擎系统,其特征在于,针对高热度等级的小文件,访问请求响应单元建立常驻的访问任务。
5.根据权利要求4所述的数据压缩引擎系统,其特征在于,小文件分配管理单元在名称节点中设置与各个访问热度等级相对应的元数据表副本数量及检索进程数量。
6.一种用于大数据存储系统的数据压缩方法,其特征在于,包括:
请求识别步骤,对于大数据存储系统的任何一个客户端节点提出的写入请求或访问请求,判断该写入请求或访问请求针对的文件是否为小文件;如果是小文件则将所述写入请求转至小文件分配管理步骤,将所述访问请求转至访问请求响应步骤;
小文件分配管理步骤,根据转来的所述写入请求,将待上传的小文件分配给大数据存储系统下的数据节点集群当中的一个或多个固定的新增小文件接收数据节点;向提出写入请求的客户端节点返回被分配的新增小文件接收数据节点的信息,以便该客户端节点将该小文件作为一个分块发送至该新增小文件接收数据节点进行存储;并且维护一个新增小文件元数据表,为该小文件在该表中登记一个新建的元数据项;
并且,小文件分配管理步骤还包括:维护高热度等级元数据表、中等热度等级元数据表和低热度等级元数据表;对于在新增小文件元数据表中登记并且由新增小文件接收数据节点存储的新增小文件,根据访问请求热度统计单元确定的该新增小文件的访问热度等级属于高热度等级、中等热度等级还是低热度等级,在相应热度等级对应的元数据表中为该小文件建立和维持元数据项;并且,向新增小文件接收数据节点下达指令,将该小文件传输给被分配存储该小文件的数据节点;其中,对于高热度等级的小文件,被分配存储该小文件的数据节点将其作为一个单独的分块进行存储;对于中等热度等级的小文件,将其合并为Sequence file更大的文件结构,然后由被分配存储该合并的文件结构的数据节点进行存储;对于低热度等级的小文件,将其合并为Sequence file更大的文件结构,并且对该文件结构进行数据压缩处理,然后由被分配存储该合并且压缩的文件结构的数据节点进行存储;
访问请求热度统计步骤,用于统计大数据存储系统下的每个小文件在单位时间内被全部客户端节点所请求访问的次数,根据该次数判定各个小文件所属的访问热度等级属于高热度等级、中等热度等级还是低热度等级;
访问请求响应步骤,响应转来的访问请求,为该访问请求创建一个访问任务,根据该访问请求提供的小文件标识符查询高热度等级元数据表、中等热度等级元数据表和低热度等级元数据表,确定该小文件所在的文件、分块及其数据节点的网络地址,向提出该访问请求的客户端节点反馈以上信息。
7.根据权利要求6所述的数据压缩方法,其特征在于,在对低热度等级的小文件进行合并且压缩的过程中,选取一定数量的同源的小文件,合并为Sequence file更大的文件结构。
8.根据权利要求7所述的数据压缩方法,其特征在于,所述访问请求热度统计步骤中,持续性地统计监测所有客户端节点对于所有小文件的访问请求,更新所有小文件的访问热度等级;
所述小文件分配管理步骤根据访问热度等级的变化对小文件进行重排,包括:
响应原属于低热度等级的小文件变更为高热度等级,从合并且压缩后的文件结构当中解压缩并分离出该小文件内容,作为一个独立的分块,存储于该数据节点上,并且更新高热度等级元数据表;
响应原属于低热度等级的小文件变更为中等热度等级,从合并且压缩后的文件结构当中解压缩并分离出该小文件内容,作为一个独立的分块,存储于该数据节点上,当该数据节点上以独立分块形式存在的中等热度等级的小文件积累到一定数量,则可以将这些小文件合并为一个Sequence file更大的文件结构;并且更新中等热度等级元数据表;
响应原属于高热度等级的小文件变更为中等热度等级或者低热度等级,向存储该小文件的分块的数据节点发出指令,通知该数据节点此以独立分块形式存在的小文件已经允许被合并,或已经允许被合并且压缩;当该数据节点上允许被合并、或允许被合并且压缩的以独立分块形式存在的小文件积累到一定数量,则可以将这些小文件合并为一个Sequencefile更大的文件结构,或者合并为更大的文件结构并且对该文件结构执行压缩运算;并且更新中等热度等级元数据表或低热度等级元数据表。
9.根据权利要求8所述的数据压缩方法,其特征在于,访问请求响应步骤中,针对高热度等级的小文件,建立常驻的访问任务。
10.根据权利要求9所述的数据压缩方法,其特征在于,小文件分配管理步骤中,在名称节点中设置与各个访问热度等级相对应的元数据表副本数量及检索进程数量。
CN201710483336.1A 2017-06-22 2017-06-22 一种用于大数据存储系统的数据压缩引擎及方法 Active CN107463606B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710483336.1A CN107463606B (zh) 2017-06-22 2017-06-22 一种用于大数据存储系统的数据压缩引擎及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710483336.1A CN107463606B (zh) 2017-06-22 2017-06-22 一种用于大数据存储系统的数据压缩引擎及方法

Publications (2)

Publication Number Publication Date
CN107463606A CN107463606A (zh) 2017-12-12
CN107463606B true CN107463606B (zh) 2020-11-13

Family

ID=60546373

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710483336.1A Active CN107463606B (zh) 2017-06-22 2017-06-22 一种用于大数据存储系统的数据压缩引擎及方法

Country Status (1)

Country Link
CN (1) CN107463606B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108363643B (zh) * 2018-03-27 2021-06-15 东北大学 一种基于文件访问热度的hdfs副本管理方法
CN109144791B (zh) * 2018-09-30 2020-12-22 北京金山云网络技术有限公司 数据转存方法、装置和数据管理服务器
CN109684294A (zh) * 2018-12-24 2019-04-26 海能达通信股份有限公司 小文件处理方法及分布式系统
CN109802684B (zh) * 2018-12-26 2022-03-25 华为技术有限公司 进行数据压缩的方法和装置
CN115328387A (zh) * 2021-05-10 2022-11-11 华为技术有限公司 一种数据压缩方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150347A (zh) * 2013-02-07 2013-06-12 浙江大学 基于文件热度的动态副本管理方法
CN103678579A (zh) * 2013-12-12 2014-03-26 浪潮电子信息产业股份有限公司 一种小文件存储效率的优化方法
CN104820714A (zh) * 2015-05-20 2015-08-05 国家电网公司 基于hadoop的海量瓦片小文件存储管理方法
CN105975638A (zh) * 2016-06-23 2016-09-28 中国民航大学 一种基于NoSQL的海量航空物流小文件存储结构及其存取方法
CN106547911A (zh) * 2016-11-25 2017-03-29 长城计算机软件与系统有限公司 一种海量小文件的存取方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2608096B1 (en) * 2011-12-24 2020-08-05 Tata Consultancy Services Ltd. Compression of genomic data file

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150347A (zh) * 2013-02-07 2013-06-12 浙江大学 基于文件热度的动态副本管理方法
CN103678579A (zh) * 2013-12-12 2014-03-26 浪潮电子信息产业股份有限公司 一种小文件存储效率的优化方法
CN104820714A (zh) * 2015-05-20 2015-08-05 国家电网公司 基于hadoop的海量瓦片小文件存储管理方法
CN105975638A (zh) * 2016-06-23 2016-09-28 中国民航大学 一种基于NoSQL的海量航空物流小文件存储结构及其存取方法
CN106547911A (zh) * 2016-11-25 2017-03-29 长城计算机软件与系统有限公司 一种海量小文件的存取方法和系统

Also Published As

Publication number Publication date
CN107463606A (zh) 2017-12-12

Similar Documents

Publication Publication Date Title
CN107463606B (zh) 一种用于大数据存储系统的数据压缩引擎及方法
US11238098B2 (en) Heterogenous key-value sets in tree database
CN107169083B (zh) 公安卡口海量车辆数据存储与检索方法及装置、电子设备
US10223431B2 (en) Data stream splitting for low-latency data access
CN109947668B (zh) 存储数据的方法和装置
US8463846B2 (en) File bundling for cache servers of content delivery networks
US8510275B2 (en) File aware block level deduplication
JP2020038623A (ja) データを記憶するための方法、装置及びシステム
KR101672901B1 (ko) 분산 파일 시스템에서 소형 파일에 대한 접근성 향상을 위한 캐시 관리 시스템
CN113377868B (zh) 一种基于分布式kv数据库的离线存储系统
US11048591B1 (en) Efficient name space organization in a global name space cluster
JP2017500670A (ja) 分散ストレージシステムにおけるオブジェクトの階層チャンキング
CN110908589B (zh) 数据文件的处理方法、装置、系统和存储介质
US11093143B2 (en) Methods and systems for managing key-value solid state drives (KV SSDS)
CN102307234A (zh) 基于移动终端的资源检索方法
US11625412B2 (en) Storing data items and identifying stored data items
CN108228709B (zh) 数据存储方法和系统、电子设备、程序和介质
WO2020125630A1 (zh) 文件读取
CN109522283A (zh) 一种重复数据删除方法及系统
US20180107404A1 (en) Garbage collection system and process
KR101236477B1 (ko) 비대칭 클러스터 파일 시스템의 데이터 처리 방법
CN111611250A (zh) 数据存储设备、数据查询方法、装置、服务器及存储介质
CN111782134A (zh) 数据处理方法、装置、系统和计算机可读存储介质
US20200151148A1 (en) Web-scale distributed deduplication
CN110633261A (zh) 一种图片存储方法、图片查询方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant