文件处理方法、系统、电子设备和存储介质
文献发布时间:2023-06-19 11:22:42
技术领域
本发明涉及网络技术领域,特别是涉及文件处理方法、系统、电子设备和存储介质。
背景技术
目前,随着互联网技术的发展,需要进行存储和处理的数据不断增长,分布式文件系统(Distributed File System,DFS)应运而生。分布式文件系统可以对数据量较大的文件进行存储和管理,分布式文件系统将文件存储在多个节点,通过网络进行节点间的通信和数据传输,方便用户访问。
然而,以分布式文件系统为Hadoop分布式文件系统(Hadoop Distributed FileSystem,HDFS)为例,HDFS存在大量的数据量较小的小文件,且每个小文件占用对应的数据节点中的一个索引来存储小文件的数据信息,这占用了系统的大量内存,影响系统的性能。
发明内容
本发明实施例的目的在于提供一种文件处理方法、系统、电子设备和存储介质,解决分布式文件系统中的小文件占用了大量内存,进而影响系统性能的技术问题。具体技术方案如下:
在本发明实施例的第一方面,首先提供了一种文件处理方法,应用于分布式文件管理系统,所述分布式文件管理系统包括管理节点、模拟节点和N个数据节点,所述模拟节点基于所述管理节点生成,所述数据节点存储有数据文件,N为正整数,所述方法包括:
所述模拟节点获取所述N个数据节点中每一数据节点存储的文件对象的文件信息,一个所述文件对象占用对应的数据节点中的一个索引;
根据所述文件信息确定M个目标文件对象,所述M个目标文件对象为占用内存值小于预设值的文件或者文件夹,所述M为大于1的正整数;
将所述M个目标文件对象移动到目标文件夹,所述目标文件夹存储于任一数据节点,所述目标文件夹占用对应的数据节点中的一个索引;
根据所述目标文件夹的路径,修改所述M个目标文件对象的路径。
在本发明实施例的第二方面,还提供了一种文件处理系统,所述文件处理系统包括管理节点、模拟节点和N个数据节点,所述模拟节点基于所述管理节点生成,所述数据节点存储有数据文件,N为正整数;
所述模拟节点,用于获取所述N个数据节点中每一数据节点存储的文件对象的文件信息,一个所述文件对象占用对应的数据节点中的一个索引;
根据所述文件信息确定M个目标文件对象,所述M个目标文件对象为占用内存值小于预设值的文件或者文件夹,所述M为大于1的正整数;
将所述M个目标文件对象移动到目标文件夹,所述目标文件夹存储于任一数据节点,所述目标文件夹占用对应的数据节点中的一个索引;
根据所述目标文件夹的路径,修改所述M个目标文件对象的路径。
在本发明实施例的第三方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一实施例所述的文件处理方法。
在本发明实施的第四方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一实施例所述的文件处理方法。
本发明实施例中,通过模拟节点获取每一数据节点存储的文件对象的文件信息,进而根据文件信息确定目标文件对象,其中,目标文件对象为占用内存值小于预设值的文件或者文件夹,即小文件。将小文件移动至目标文件夹中,避免每个小文件占用一个索引,以此释放系统的大量内存空间,实现对于系统中所有文件对象的优化,进而提高系统的性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例中文件处理方法的流程图;
图2为本发明实施例中文件处理方法的一应用场景示意图;
图3为本发明实施例中文件处理系统的结构示意图;
图4为本发明实施例中一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
本实施例提供的文件处理方法应用于分布式文件管理系统,可选地,以下以该方法应用于HDFS为例进行阐述,需要理解的是,本实施例提供的文件处理方法还可以应用其他文件系统,在此不做具体限制。
HDFS由管理节点和N个数据节点构成,每个数据节点均存储有文件对象,且每个文件对象占用对应的数据节点中的1个索引。该文件对象又称元数据,该文件对象包括但不限于文件夹和文件,文件夹存储有文件,或者,文件夹为未存储任何文件的空白文件夹,其中,可以将占用内存值大于或等于预设值的文件理解为大文件;将占用内存值小于预设值的文件理解为小文件。
上述管理节点包括激活节点和备份节点,激活节点用于读取各数据节点存储的文件,或者,将文件存储至任一数据节点;备份节点并不能与数据节点进行交互,备份节点用于对激活节点的运行数据进行拷贝,当激活节点出现故障时,可以通过激活备份节点的方式,保证系统正常工作。
目前,在使用HDFS处理大量文件数据的场景中,例如在机器学习领域使用HDFS处理数据,或者,在数据湖中使用HDFS处理数据,HDFS的各个数据节点存在大量的小文件,每个小文件都占用一个对应的索引来存储数据信息,这占用了系统的大量内存,影响系统的性能。
基于上述技术问题,本发明提出以下技术构思:
将各个数据节点存储的小文件合并到一个文件夹,并删除各个数据节点存储的小文件。由于一个文件夹只占用一个索引来存储文件夹中的数据信息,因此可以通过将大量小文件合并到一个文件夹的方式,释放系统的大量内存,提高系统处理文件的性能。
基于上述技术构思,本发明实施例提供一种文件处理方法。请参阅图1,图1为本发明实施例中文件处理方法的流程图。本发明实施例提供的文件处理方法包括:
S101,模拟节点获取N个数据节点中每一数据节点存储的文件对象的文件信息。
本实施例中,为了对每个数据节点中存储的小文件进行合并,可以基于管理节点的部分功能,新增一个模拟节点。应理解,管理节点包括激活节点和备份节点,该模拟节点可以基于激活节点生成,具备激活节点的读取各数据节点存储文件的功能,
上述文件对象可以是文件或者文件夹,上述文件信息可以是文件对象的内存占用值,其中,一个文件对象占用对应的数据节点中的一个索引。
需要说明的是,备份节点从激活节点获取镜像数据和日志数据,实现对于激活节点的运行数据的拷贝。
其中,镜像文件反映整个分布式文件管理系统的所有目录和文件的信息,日志数据反映系统中所有文件的操作记录。
一种可选的实施方式为,对激活节点进行编译,在激活节点原有功能的基础上,新增本发明实施例提供的处理小文件的功能,这种实施方式中,可以将编译后的激活节点理解为模拟节点。
S102,根据所述文件信息确定M个目标文件对象。
如上所述,每个数据节点存储的文件对象包括但不限于文件夹和文件,其中,文件包括占用内存值大于或等于预设值的大文件和占用内存值小于预设值的小文件。
在一些实施例中,文件对象为文件夹,这样,可以将存储有小文件的文件夹确定为目标文件对象。
在另一些实施例中,文件对象为文件,这样,可以将小文件确定为目标文件对象。
应理解,由于要实现多个目标文件对象的合并,因此M为大于1的正整数。具体的技术方案请参阅后续实施例。
S103,将所述M个目标文件对象移动到目标文件夹。
本实施例中,确定M个目标文件对象后,将M个目标文件对象移动到目标文件夹,其中,目标文件夹可以存储在任一数据节点,且目标文件夹占用对应的数据节点中的一个索引。
需要说明的是,目标文件夹可以是HTTP档案规范(HTTP Archive format,HAR)文件夹,HAR是一个用来储存HTTP请求/响应信息的通用文件格式,HAR格式可以兼容大多数文件管理系统。在目标文件夹为HAR文件夹的情况下,将M个目标文件对象合并为一个HAR文件。
还需要说明的是,目标文件夹也可以是其他文件格式的文件夹,本实施例在此不做具体限制。
S104,根据所述目标文件夹的路径,修改所述M个目标文件对象的路径。
将M个目标文件对象移动至目标文件夹后,为了保证每个目标文件对象仍然能被用户正常访问,需要对每个目标文件对象的路径进行修改。具体的技术方案请参阅后续实施例。
本发明实施例中,通过模拟节点获取每一数据节点存储的文件对象的文件信息,进而根据文件信息确定目标文件对象,其中,目标文件对象为占用内存值小于预设值的文件或者文件夹,即小文件。将小文件移动至目标文件夹中,避免每个小文件占用一个索引,以此释放系统的大量内存空间,提高系统的性能;在目标文件对象移动至目标文件夹后,修改目标文件对象的路径,进一步确保用户能够正常访问目标文件夹中的每个小文件。
如上所述,数据节点存储的文件对象可以是文件夹或者文件,需要说明的是,在文件对象为文件夹的情况下,存在一种可选地实施方式确定目标文件对象;在文件对象为文件的情况下,存在另一种可选地实施方式确定目标文件对象。
以下,分别对这2种可能存在的情况进行具体阐述:
一种可能存在的情况为,上述文件对象为文件:
可选地,所述模拟节点获取所述N个数据节点中每一数据节点存储的文件对象的文件信息包括:
在所述目标文件对象为文件的情况下,所述模拟节点获取所述N个数据节点中每一数据节点存储的文件的内存占用值。
所述根据所述文件信息确定M个目标文件对象包括:
将所述内存占用值小于预设值的文件确定为目标文件对象。
本实施例中,在文件对象为文件的情况下,上述文件信息可以为文件的内存占用值,应理解,文件的内存占用值与文件的占用内存呈正比,也就是说,文件的内存占用值越高,文件占用的系统内存越多。
本实施例中,模拟节点获取每个数据节点存储的文件的内存占用值,将内存占用值小于预设值的文件确定为目标文件对象,换言之,将内存占用值小于预设值的文件确定为小文件。可选地,该预设值可以为256MB,示例性的,若一文件的内存占用值为250MB,则将该文件确定为目标文件对象。
一种可能存在的情况为,上述文件对象为文件夹:
可选地,所述模拟节点获取所述N个数据节点每一数据节点存储的文件对象的文件信息包括:
在所述目标文件对象为文件夹的情况下,所述模拟节点获取所述N个数据节点每一数据节点存储的文件夹的内存占用值和文件数量。
所述根据所述文件信息确定M个目标文件对象包括:
将所述文件数量与所述内存占用值的比值小于预设比值的文件夹,确定为目标文件对象。
本实施例中,在文件对象为文件夹的情况下,上述文件信息可以为文件夹的内存占用值和文件夹存储的文件数量。
本实施例中,计算文件数量与内存占用值的比值,在该比值小于预设比值的情况下,说明该文件夹中存储的文件均为小文件,则可以确定该文件夹为目标文件对象,其中,预设比值为可以自定义设置的经验数值,本实施例在此不做具体限制。
例如,一文件夹中包括40个文件,且文件夹的内存占用值为400MB,预设比值为0.2。那么,文件数量与内存占用值的比值为0.1,由于0.1小于0.2,因此可以将该文件夹确定为目标文件对象。
可选地,所述将所述M个目标文件对象移动到目标文件夹包括:
将所述M个目标文件对象按照预设顺序复制至临时文件夹中;在所述M个目标文件对象均复制至所述临时文件夹后,调整所述临时文件夹的路径,将所述临时文件夹转换为所述目标文件夹;删除所述N个数据节点存储的M个目标文件对象。
本实施例中,模拟节点可以启用运行相关的线程,生成一个临时文件夹,例如MapReduce线程,其中,MapReduce线程是面向大数据并行处理的一种常用线程。模拟节点也可以启用其它线程将M个目标文件对象复制至临时文件夹中,本实施例在此不做具体限定。
应理解,为了避免目标文件对象在合并过程中被系统处理,进而无法实现文件或文件夹的合并,可以将上述临时文件夹为不被系统识别的非正式文件夹,可选地,可以通过对临时文件夹的路径进行修改,使得临时文件夹不被系统识别。
本实施例中,在所有的目标文件对象均复制到临时文件夹后,调整临时文件夹的路径,重新命名该临时文件夹,将临时文件夹转换为目标文件夹。
示例性的,临时文件夹为HAR文件,临时文件夹的路径为不被分布式文件管理系统识别的/path/.target.har。在所有目标文件对象均复制至临时文件夹的情况下,将临时文件夹的路径修改为/path/target.har这一可被系统识别的路径,从而将临时文件夹转换为目标文件夹。
在得到目标文件夹后,在各个数据节点中删除目标文件对象,以此减少小文件的数量,释放大量内存空间,提高系统的性能。
可选地,所述根据所述目标文件夹的路径,修改所述M个目标文件对象的路径包括:
将所述M个目标文件对象的路径调整为所述目标文件夹的路径。
本实施例中,在将目标文件对象合并至目标文件夹后,将目标文件对象的路径设置与目标文件夹相同,这种情况下,系统可通过目标文件对象的路径识别目标文件对象,进而确保用户能访问目标文件对象。
为便于理解本发明实施例的技术方案,示例说明如下:
请参阅图2,如图2所示,分布式文件管理系统包括激活节点、备份节点和日志节点。
其中,激活节点还与图2中未示出的数据节点建立通信连接。
其中,日志节点用于存储操作记录,该操作记录用于表征用户对系统中文件所进行的操作,应理解,系统可以包括有多个日志节点,图2示出的1个日志节点仅为举例示意,并不用于限制日志节点的数量。
其中,备份节点获取激活节点存储的镜像数据,获取数据节点存储的日志数据,在激活节点出现故障的情况下,可以调用该备份节点作为一个新的激活节点,从而保证系统的正常运行。
图2中还包括模拟节点,该模拟节点具备激活节点的部分功能,该模拟节点定时获取激活节点存储的镜像数据,实时获取数据节点存储的日志数据。
模拟节点通过获取激活节点存储的镜像数据,得到镜像数据中存储的多个目标文件对象,该模拟节点可以通过外部通信接口调用资源管理服务将多个目标文件对象移动至目标文件夹,例如Yarn服务。随后,向激活节点发送相应的指令,使得激活节点删除各数据节点中存储的目标文件对象。
如图3所示,本发明实施例还提供了一种文件处理装置200,所述文件处理装置200设置与模拟节点,所述模拟节点应用于还包括管理节点和N个数据节点的系统,所述模拟节点基于所述管理节点生成,所述数据节点存储有数据文件,N为正整数;
所述文件处理装置200包括:
获取模块201,用于获取所述N个数据节点201中每一数据节点201存储的文件对象的文件信息;
确定模块202,用于根据所述文件信息确定M个目标文件对象;
移动模块203,用于将所述M个目标文件对象移动到目标文件夹;
修改模块204,用于根据所述目标文件夹的路径,修改所述M个目标文件对象的路径。
可选地,所述获取模块201,还用于:
在所述目标文件对象为文件的情况下,获取所述N个数据节点201每一数据节点201存储的文件的内存占用值;
将所述内存占用值小于预设值的文件确定为目标文件对象。
可选地,所述获取模块201,还用于:
在所述目标文件对象为文件夹的情况下,获取所述N个数据节点201每一数据节点201存储的文件夹的内存占用值和文件数量;
将所述文件数量与所述内存占用值的比值小于预设比值的文件夹,确定为目标文件对象。
可选地,所述移动模块203,还用于:
将所述M个目标文件对象按照预设顺序复制至临时文件夹中;
在所述M个目标文件对象均复制至所述临时文件夹后,调整所述临时文件夹的路径,将所述临时文件夹转换为所述目标文件夹;
删除所述N个数据节点存储的M个目标文件对象。
可选地,所述修改模块204,还用于:
将所述M个目标文件对象的路径调整为所述目标文件夹的路径。
本发明实施例还提供了一种电子设备,如图4所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信。
存储器303,用于存放计算机程序;
处理器301,用于执行存储器303上所存放的程序时,所述计算机程序被所述处理器301执行时,用于获取所述N个数据节点中每一数据节点存储的文件对象的文件信息;
根据所述文件信息确定M个目标文件对象;
将所述M个目标文件对象移动到目标文件夹;
根据所述目标文件夹的路径,修改所述M个目标文件对象的路径。
可选地,所述计算机程序被所述处理器301执行时,还用于在所述目标文件对象为文件的情况下,获取所述N个数据节点中每一数据节点存储的文件的内存占用值;
将所述内存占用值大于预设值的文件确定为目标文件对象。
可选地,所述计算机程序被所述处理器301执行时,还用于在所述目标文件对象为文件夹的情况下,获取所述N个数据节点每一数据节点存储的文件夹的内存占用值和文件数量;
将所述文件数量与所述内存占用值的比值小于预设比值的文件夹,确定为目标文件对象。
可选地,所述计算机程序被所述处理器301执行时,还用于将所述M个目标文件对象按照预设顺序复制至临时文件夹中;
在所述M个目标文件对象均复制至所述临时文件夹后,调整所述临时文件夹的路径,将所述临时文件夹转换为所述目标文件夹;
删除所述N个数据节点存储的M个目标文件对象。
可选地,所述计算机程序被所述处理器301执行时,还用于将所述M个目标文件对象的路径调整为所述目标文件夹的路径。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一实施例所述的文件处理方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一实施例所述的文件处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
- 加密文件文件名的处理方法、装置、电子设备及存储介质
- 文本文件处理方法、装置、系统、电子设备、存储介质