首页> 中国专利> 一种基于HDFS的小文件处理方法、装置、介质及电子设备

一种基于HDFS的小文件处理方法、装置、介质及电子设备

摘要

本申请实施例公开了一种基于HDFS的小文件处理方法、装置、介质及电子设备。该方法包括:对待处理文件进行筛选,获得目标文件;若所述目标文件满足文件体积约束条件,则根据预设写入规则将所述目标文件保存至目标集群;将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。本技术方案,可以将小文件保存至集群中,并将集群中的各小文件合并成大文件存储到HDFS中,节省了小文件处理的时间,提高了处理效率。

著录项

  • 公开/公告号CN113111036A

    专利类型发明专利

  • 公开/公告日2021-07-13

    原文格式PDF

  • 申请/专利权人 北京锐安科技有限公司;

    申请/专利号CN202110417936.4

  • 发明设计人 魏鹏飞;万月亮;火一莽;

    申请日2021-04-19

  • 分类号G06F16/16(20190101);G06F16/182(20190101);

  • 代理机构11332 北京品源专利代理有限公司;

  • 代理人孟金喆

  • 地址 100044 北京市海淀区西小口路66号中关村东升科技园北领地B-2号楼七层

  • 入库时间 2023-06-19 11:49:09

说明书

技术领域

本申请实施例涉及大数据技术领域,尤其涉及一种基于HDFS的小文件处理方法、装置、介质及电子设备。

背景技术

随着互联网技术的发展,网络数据量成指数级增长。在实际生产环境中,大数据规模达到千亿或者PB级,目前广泛使用HDFS(Hadoop Distributed File System,分布式文件系统)处理各类文件。

输入到HDFS的数据由很多小文件构成,这里的小文件指的是小于HDFS中最小存储和处理单位的文件。

处理小文件的速度远远小于处理同等大小的大文件的速度。每一个小文件要占用一个资源单位,而任务启动将消耗大量时间甚至大部分时间都耗费在启动和释放任务上。针对大量小文件处理并没有很好的解决方案。

发明内容

本申请实施例提供一种基于HDFS的小文件处理方法、装置、介质及电子设备,可以将小文件保存至集群中,并将集群中的各小文件合并成大文件存储到HDFS中,节省了小文件处理的时间,提高了处理效率。

第一方面,本申请实施例提供了一种基于HDFS的小文件处理方法,该方法包括:

对待处理文件进行筛选,获得目标文件;

若所述目标文件满足文件体积约束条件,则根据预设写入规则将所述目标文件保存至目标集群;

将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。

第二方面,本申请实施例提供了一种基于HDFS的小文件处理装置,该装置包括:

目标文件获取模块,用于对待处理文件进行筛选,获得目标文件;

目标文件保存保存模块,用于若所述目标文件满足文件体积约束条件,则根据预设写入规则将所述目标文件保存至目标集群;

合并文件传输模块,用于将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。

第三方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请实施例所述的基于HDFS的小文件处理方法。

第四方面,本申请实施例提供了一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本申请实施例所述的基于HDFS的小文件处理方法。

本申请实施例所提供的技术方案,对待处理文件进行筛选,获得目标文件;若目标文件满足文件体积约束条件,则根据预设写入规则将所述目标文件保存至目标集群;将目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将合并文件传输至HDFS。本技术方案,可以将小文件保存至集群中,并将集群中的各小文件合并成大文件存储到HDFS中,节省了小文件处理的时间,提高了处理效率。

附图说明

图1是本申请实施例一提供的基于HDFS的小文件处理方法的流程图;

图2是本申请实施例二提供的基于HDFS的小文件处理过程的示意图;

图3是本申请实施例三提供的基于HDFS的小文件处理装置的结构示意图;

图4是本申请实施例五提供的一种电子设备的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

实施例一

图1是本申请实施例一提供的基于HDFS的小文件处理方法的流程图,本实施例可适用于对大量小文件进行处理的情况,该方法可以由本申请实施例所提供的基于HDFS的小文件处理装置执行,该装置可以由软件和/或硬件的方式来实现,并可集成于用于文件处理的智能终端等设备中。

如图1所示,所述基于HDFS的小文件处理方法包括:

S110、对待处理文件进行筛选,获得目标文件;

在本实施例中,可以利用预设函数对待处理文件进行筛选。优选的,预设函数可以是globStatus函数。通过globStatus函数获取符合条件的目标文件的路径。其中,globStatus函数是用通配符匹配制定模式的路径。

S120、若所述目标文件满足文件体积约束条件,则根据预设写入规则将所述目标文件保存至目标集群;

其中,文件体积约束条件可以根据业务需求进行设定。例如,可以将小于128M的目标文件判断为满足文件体积约束条件,将大于128M的目标文件判断为不满足文件体积约束条件。

其中,集群可以是指通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。

在本方案中,可以将满足文件体积约束条件的目标文件按照具体规则保存至目标集群中。例如,可以是按照具体的名称规则保存至目标集群。其中,在将目标文件保存至目标集群中时,将目标文件按照业务分组分别进行保存。将不满足文件体积约束条件的目标文件直接保存至HDFS。其中,Hadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件上的分布式文件系统,有着高容错性的特点。

在本技术方案中,可选的,所述目标集群包括Redis集群;

相应的,根据预设写入规则将所述目标文件保存至目标集群,包括:

根据预设写入规则将所述目标文件按业务分组,保存至Redis集群。

其中,Redis(Remote Dictionary Server,远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis集群是为了强化Redis的读写能力。在redis集群中,每一个redis称之为一个节点。有两种类型的节点:主节点和从节点。

将目标文件保存至Redis集群,可以充分利用CPU资源,提高小文件处理性能。

S130、将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。

在本方案中,可以根据协议查找文件类型,并根据预设合并规则将各目标文件进行合并成大文件。优选的,可以通copyBytes函数将目标文件合并为几个大文件,并上传到HDFS。

在本技术方案中,可选的,将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS,包括:

若所述目标集群的存储量满足预设存储量条件,则将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS;

若所述目标集群中的各目标文件存储时间满足预设时间条件,则将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。

可以理解的,将目标文件存储到目标集群中,当目标集群中存储的数据量达到一定量或目标文件存储时间满足一定时间要求,此时,将目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将合并文件传输至HDFS。

通过将目标集群中的各小文件合并成大文件存储到HDFS中,节省了小文件处理的时间,提高了处理效率。

在本技术方案中,可选的,将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS,包括:

若检测到缓存异常,则根据预设定时任务将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。

具体的,若检测到客户端异常奔溃,导致目标集群中写计数器异常。或者客户端长时间没有请求,缓存不能刷新到HDFS时,则根据配置启动后台定时任务将超长时间目标集群缓存刷新到HDFS。

获取目标集群信息,可以防止因异常信息导致目标集群缓存刷爆,提高了小文件处理效率。

在本技术方案中,可选的,所述方法还包括:

响应于客户端读取操作,检测目标集群中是否存在目标数据;

若存在,则将所述目标数据发送至客户端;

若不存在,则获取HDFS中目标数据,并将所述目标数据发送至客户端。

可以理解的,客户端在读取目标数据时,首先从目标集群中进行读取;若目标集群中没有该数据,则从HDFS中读取目标数据。如果数据读取时间大于目标集群中各目标文件上传至HDFS时间,则直接从HDFS中读取目标数据。

将小文件保存至集群中,并将集群中的各小文件合并成大文件存储到HDFS中。通过从集群或HDFS中读取数据,提高了读取效率。

本申请实施例所提供的技术方案,对待处理文件进行筛选,获得目标文件;若目标文件满足文件体积约束条件,则根据预设写入规则将所述目标文件保存至目标集群;将目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将合并文件传输至HDFS。通过执行本技术方案,可以将小文件保存至集群中,并将集群中的各小文件合并成大文件存储到HDFS中,节省了小文件处理的时间,提高了处理效率。

实施例二

图2是本申请实施例二提供的基于HDFS的小文件处理过程的示意图,本实施例二在实施例一的基础上进行进一步地优化。具体优化为:根据预设写入规则将所述目标文件保存至目标集群,所述方法包括:响应于客户端调用请求,将目标参数发送至客户端,以供客户端根据所述目标参数构建满足集群约束条件的待存储文件;其中,所述目标参数包括绝对路径参数和附件名称参数;响应于客户端写入操作,将所述待存储文件保存至目标集群。其中,未在本实施例中详尽描述的内容详见实施例一。如图2所示,该方法包括以下步骤:

S210、对待处理文件进行筛选,获得目标文件;

S220、响应于客户端调用请求,将目标参数发送至客户端,以供客户端根据所述目标参数构建满足集群约束条件的待存储文件;其中,所述目标参数包括绝对路径参数和附件名称参数;

在本方案中,MapFile名称服务采用Spring Boot框架实现,服务接口采用Rest接口。客户端通过发送调用请求,调用MapFile名称服务获取附件的存储的MapFile的绝对路径参数和附件在MapFile中的附件名称参数。客户端根据绝对路径参数和附件名称参数,对目标文件进行处理,构建满足集群约束条件的待存储文件。其中,待存储文件可以是指MapFile文件。

S230、响应于客户端写入操作,将所述待存储文件保存至目标集群;

在本方案中,客户端根据绝对路径参数和附件名称参数,对目标文件进行处理,构建满足集群约束条件的待存储文件后,将待存储文件写入目标集群。

在本技术方案中,可选的,在响应于客户端调用请求,将目标参数发送至客户端之前,所述方法还包括:

根据客户端发送的命名空间信息和数据集信息,确定待编辑信息;其中,所述待编辑信息包括文件长度和计数器;

相应的,在响应于客户端写入操作,将所述待存储文件保存至目标集群之后,所述方法还包括:

若检测到待存储文件保存至目标集群,则对所述计数器进行操作,以实现对客户端写入操作进行监控。

具体的,客户端调用MapFile名称服务获取附件的存储的MapFile的完整路径和附件在MapFile中的附件名称,传递的参数包括命名空间、数据集,附件长度以及附件名称;MapFile名称服务根据写客户端传入的命名空间、数据集计算出数据的存储周期,在内部的Hash表中查找MapFileInfo信息。若没有就创建一个新的MapFIleInfo;若存在,则将当前的MapFile信息的文件长度增加,计数器加一,并返回给写客户端MapFile的绝对路径参数和附件在MapFile存储中的附件名称参数;客户端根据绝对路径参数和附件名称参数完成MapFile文件写入目标集群;客户端调用MapFile名称服务缓存写完成,MapFile服务将集群的缓存的引用计数减一,实现对客户端写入操作进行监控。此时,MapFile名称服务检查当前MapFile写计数器为0,并且目标文件存储超过配置时间或者大小,通知客户端刷新集群中MapFile到HDFS文件系统,销毁当前的MapFile结构。

将目标文件保存至Redis集群,可以充分利用CPU资源,提高性能。同时对写入集群的缓存操作进行监控,提高了小文件处理效率。

S240、将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。

本申请实施例所提供的技术方案,对待处理文件进行筛选,获得目标文件;响应于客户端调用请求,将目标参数发送至客户端,响应于客户端写入操作,将待存储文件保存至目标集群。将目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将合并文件传输至HDFS。通过执行本技术方案,可以将小文件保存至集群中,并将集群中的各小文件合并成大文件存储到HDFS中,节省了小文件处理的时间,提高了处理效率。

实施例三

图3是本申请实施例三提供的基于HDFS的小文件处理装置的结构示意图,如图3所示,基于HDFS的小文件处理装置包括:

目标文件获取模块310,用于对待处理文件进行筛选,获得目标文件;

目标文件保存保存模块320,用于若所述目标文件满足文件体积约束条件,则根据预设写入规则将所述目标文件保存至目标集群;

合并文件传输模块330,用于将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。

在本技术方案中,可选的,目标文件保存保存模块320,包括:

调用请求响应单元,用于响应于客户端调用请求,将目标参数发送至客户端,以供客户端根据所述目标参数构建满足集群约束条件的待存储文件;其中,所述目标参数包括绝对路径参数和附件名称参数;

写入操作响应单元,用于响应于客户端写入操作,将所述待存储文件保存至目标集群。

在本技术方案中,可选的,所述装置还包括:

待编辑信息确定模块,用于根据客户端发送的命名空间信息和数据集信息,确定待编辑信息;其中,所述待编辑信息包括文件长度和计数器;

相应的,所述装置还包括:

计数器操作模块,用于若检测到待存储文件保存至目标集群,则对所述计数器进行操作,以实现对客户端写入操作进行监控。

在本技术方案中,可选的,合并文件传输模块330,包括:

存储量判断单元,用于若所述目标集群的存储量满足预设存储量条件,则将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS;

存储时间判断单元,用于若所述目标集群中的各目标文件存储时间满足预设时间条件,则将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。

在本技术方案中,可选的,合并文件传输模块330,包括:

缓存异常处理单元,用于若检测到缓存异常,则根据预设定时任务将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。

在本技术方案中,可选的,所述目标集群包括Redis集群;

相应的,目标文件保存保存模块320,具体用于:

根据预设写入规则将所述目标文件按业务分组,保存至Redis集群。

在本技术方案中,可选的,所述装置还包括:

客户端读取操作响应模块,用于响应于客户端读取操作,检测目标集群中是否存在目标数据;

目标数据存在模块,用于若存在,则将所述目标数据发送至客户端;

目标数据不存在模块,用于若不存在,则获取HDFS中目标数据,并将所述目标数据发送至客户端。

上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。

实施例四

本申请实施例还提供一种包含计算机可执行指令的介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种基于HDFS的小文件处理方法,该方法包括:

对待处理文件进行筛选,获得目标文件;

若所述目标文件满足文件体积约束条件,则根据预设写入规则将所述目标文件保存至目标集群;

将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。

介质——任何的各种类型的存储器设备或存储设备。术语“介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDRRAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。介质可以还包括其它类型的存储器或其组合。另外,介质可以位于程序在其中被执行的计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到计算机系统。第二计算机系统可以提供程序指令给计算机用于执行。术语“介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多介质。介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。

当然,本申请实施例所提供的一种包含计算机可执行指令的介质,其计算机可执行指令不限于如上所述的基于HDFS的小文件处理操作,还可以执行本申请任意实施例所提供的基于HDFS的小文件处理方法中的相关操作。

实施例五

本申请实施例提供了一种电子设备,该电子设备中可集成本申请实施例提供的基于HDFS的小文件处理装置。图4是本申请实施例五提供的一种电子设备的结构示意图。如图4所示,本实施例提供了一种电子设备400,其包括:一个或多个处理器420;存储装置410,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器420执行,使得所述一个或多个处理器420实现本申请实施例所提供的基于HDFS的小文件处理方法,该方法包括:

对待处理文件进行筛选,获得目标文件;

若所述目标文件满足文件体积约束条件,则根据预设写入规则将所述目标文件保存至目标集群;

将所述目标集群中的各目标文件按文件类型进行合并,获得合并文件,并将所述合并文件传输至HDFS。

当然,本领域技术人员可以理解,处理器420还实现本申请任意实施例所提供的基于HDFS的小文件处理方法的技术方案。

图4显示的电子设备400仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图4所示,该电子设备400包括处理器420、存储装置410、输入装置430和输出装置440;电子设备中处理器420的数量可以是一个或多个,图4中以一个处理器420为例;电子设备中的处理器420、存储装置410、输入装置430和输出装置440可以通过总线或其他方式连接,图4中以通过总线450连接为例。

存储装置410作为一种计算机可读介质,可用于存储软件程序、计算机可执行程序以及模块单元,如本申请实施例中的基于HDFS的小文件处理方法对应的程序指令。

存储装置410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置410可进一步包括相对于处理器420远程设置的存储器,这些远程存储器可以通过网络连接。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置430可用于接收输入的数字、字符信息或语音信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏、扬声器等电子设备。

本申请实施例提供的电子设备,可以达到将小文件保存至集群中,并将集群中的各小文件合并成大文件存储到HDFS中,节省了小文件处理的时间,提高了处理效率的目的。

上述实施例中提供的基于HDFS的小文件处理装置、介质及电子设备可执行本申请任意实施例所提供的基于HDFS的小文件处理方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的基于HDFS的小文件处理方法。

注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号