一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种文件合并方法、装置、电子设备及存储介质与流程

2021-10-29 20:34:00 来源:中国专利 TAG:数据处理 电子设备 装置 文件合并 方法


1.本技术涉及大数据处理技术领域,特别是涉及一种文件合并方法、装置、电子设备及存储介质。


背景技术:

2.在基于spark等分布式计算架构的大数据平台中,通常是基于分布式存储系统进行文件存储的。在分布式存储系统中,block(集群块)是对文件进行存储的一种最小存储单元,各个文件以block为单位进行存储。例如,假设一个block的存储空间大小为64m,若文件的文件大小为50m,则该文件占用一个block的存储空间;若文件的文件大小为100m,则该文件占用两个block的存储空间。
3.然而,在分布式存储系统中通常存在大量文件大小较小的文件,例如,文件大小小于一个block的存储空间大小,为便于表述,将这类文件称为小文件。虽然上述小文件的文件大小较小,但每一小文件依然会占用一个block,这样会导致存储空间浪费。
4.因此,现在亟需一种文件合并方法,来对分布式存储系统中文件进行合并,以减小文件对存储空间的消耗。


技术实现要素:

5.本技术实施例的目的在于提供一种文件合并方法、装置、电子设备及存储介质,以减小文件对存储空间的消耗。具体技术方案如下:
6.第一方面,本技术实施例提供了一种文件合并方法,所述方法应用于分布式存储系统,所述方法包括:
7.查找文件大小不超过预设的单元存储阈值的文件,作为待合并文件,其中,所述单元存储阈值为:所述分布式存储系统中最小存储单元的存储空间的整数倍;
8.对各个待合并文件进行分组,得到多个文件组,其中,每一文件组中待合并文件的文件大小之和不超过所述单元存储阈值;
9.分别对每一待合并文件组内各个待合并文件进行合并,其中,每一待合并文件组为:所得到的文件组中包含的待合并文件数量大于1的文件组。
10.本技术的一个实施例中,所述对各个待合并文件进行分组,得到多个文件组,包括:
11.按照每一文件组内所包含待合并文件的文件大小之和趋近于所述单元存储阈值的原则,对各个待合并文件进行分组,得到多个文件组。
12.本技术的一个实施例中,所述按照每一文件组内所包含待合并文件的文件大小之和趋近于所述单元存储阈值的原则,对各个待合并文件进行分组,得到多个文件组,包括:
13.将文件大小最大的一待合并文件划分到一新的文件组;
14.针对当前待合并文件,判断已有的文件组中是否存在目标文件组,若存在,将所述当前待合并文件划分到所述目标文件组,若不存在,则将所述当前待合并文件划分到新的
文件组,其中,所述当前待合并文件为:未划分到文件组的待合并文件中文件大小最大的一文件,所述目标文件组为:已包含的待合并文件与所述当前待合并文件的文件大小之和不超过所述单元存储阈值的文件组;
15.将所述当前待合并文件更新为未划分到文件组的待合并文件中文件大小最大的一文件,返回所述针对当前待合并文件,判断已有的文件组中是否存在目标文件组的步骤,直至各个待合并文件均被划分到文件组。
16.本技术的一个实施例中,所述针对当前待合并文件,判断已有的文件组中是否存在目标文件组,若存在,将所述当前待合并文件划分到所述目标文件组,若不存在,则将所述当前待合并文件划分到新的文件组,包括:
17.针对当前待合并文件,计算任一已有的文件组内已包含的待合并文件与所述当前待合并文件的文件大小之和;
18.若所得文件大小之和不超过所述单元存储阈值,则将所述任一已有的文件组作为目标文件组,并将所述当前待合并文件划分到所述目标文件组内;
19.若所得文件大小之和超过所述单元存储阈值,则将所述任一已有的文件组更新为已有的文件组中未计算过文件大小之和的一个文件组,返回所述针对当前待合并文件,计算任一已有的文件组内已包含的待合并文件与所述当前待合并文件的文件大小之和的步骤,直至遍历所有已有的文件组;
20.在已有的文件组中不存在目标文件组的情况下,则将所述当前待合并文件划分到新的文件组内。
21.本技术的一个实施例中,所述分别对每一待合并文件组内各个待合并文件进行合并,包括:
22.针对每一待合并文件组,对该待合并文件组内各个待合并文件进行合并,将合并得到的临时文件存储至预先创建的中转目录下,在对该待合并文件组内待合并文件合并成功的情况下,删除该待合并文件组所包含的各个待合并文件,并将所述中转目录下存储的临时文件转存至原始目录,其中,所述原始目录为:删除之前各个待合并文件所在的目录。
23.本技术的一个实施例中,所述分别对每一待合并文件组内各个待合并文件进行合并,包括:
24.分别针对各个待合并文件组创建合并任务,并发执行各个合并任务对各个待合并文件组内各个待合并文件进行合并。
25.本技术的一个实施例中,所述查找文件大小不超过预设的单元存储阈值的文件,作为待合并文件,包括:
26.查找文件大小不超过预设的文件大小阈值的文件,作为待合并文件,其中,所述文件大小阈值为:预设的单元存储阈值与不大于1的预设系数的乘积。
27.第二方面,本技术实施例提供了一种文件合并装置,所述装置应用于分布式存储系统,所述装置包括:
28.文件查找模块,用于查找文件大小不超过预设的单元存储阈值的文件,作为待合并文件,其中,所述单元存储阈值为:所述分布式存储系统中最小存储单元的存储空间的整数倍;
29.文件分组模块,用于对各个待合并文件进行分组,得到多个文件组,其中,每一文
件组中待合并文件的文件大小之和不超过所述单元存储阈值;
30.文件合并模块,用于分别对每一待合并文件组内各个待合并文件进行合并,其中,每一待合并文件组为:所得到的文件组中包含的待合并文件数量大于1的文件组。
31.本技术的一个实施例中,所述文件分组模块,具体用于:
32.按照每一文件组内所包含待合并文件的文件大小之和趋近于所述单元存储阈值的原则,对各个待合并文件进行分组,得到多个文件组。
33.本技术的一个实施例中,所述文件分组模块,包括:
34.第一文件分组单元,用于将文件大小最大的一待合并文件划分到一新的文件组;
35.第二文件分组单元,用于针对当前待合并文件,判断已有的文件组中是否存在目标文件组,若存在,将所述当前待合并文件划分到所述目标文件组,若不存在,则将所述当前待合并文件划分到新的文件组,其中,所述当前待合并文件为:未划分到文件组的待合并文件中文件大小最大的一文件,所述目标文件组为:已包含的待合并文件与所述当前待合并文件的文件大小之和不超过所述单元存储阈值的文件组;
36.文件更新单元,用于将所述当前待合并文件更新为未划分到文件组的待合并文件中文件大小最大的一文件,触发所述第二文件分组单元,直至各个待合并文件均被划分到文件组。
37.本技术的一个实施例中,所述第二文件分组单元,具体用于:
38.针对当前待合并文件,计算任一已有的文件组内已包含的待合并文件与所述当前待合并文件的文件大小之和;
39.若所得文件大小之和不超过所述单元存储阈值,则将所述任一已有的文件组作为目标文件组,并将所述当前待合并文件划分到所述目标文件组内;
40.若所得文件大小之和超过所述单元存储阈值,则将所述任一已有的文件组更新为已有的文件组中未计算过文件大小之和的一个文件组,返回所述针对当前待合并文件,计算任一已有的文件组内已包含的待合并文件与所述当前待合并文件的文件大小之和的步骤,直至遍历所有已有的文件组;
41.在已有的文件组中不存在目标文件组的情况下,则将所述当前待合并文件划分到新的文件组内。
42.本技术的一个实施例中,所述文件合并模块,具体用于:
43.针对每一待合并文件组,对该待合并文件组内各个待合并文件进行合并,将合并得到的临时文件存储至预先创建的中转目录下,在对该待合并文件组内待合并文件合并成功的情况下,删除该文件组所包含的各个待合并文件,并将所述中转目录下存储的临时文件转存至原始目录,其中,所述原始目录为:删除之前各个待合并文件所在的目录。
44.本技术的一个实施例中,所述文件合并模块,具体用于:
45.分别针对各个待合并文件组创建合并任务,并发执行各个合并任务对各个待合并文件组内各个待合并文件进行合并。
46.本技术的一个实施例中,所述文件查找模块,具体用于:
47.查找文件大小不超过预设的文件大小阈值的文件,作为待合并文件,其中,所述文件大小阈值为:预设的单元存储阈值与不大于1的预设系数的乘积。
48.第三方面,本技术实施例提供了一种电子设备,包括处理器、通信接口、存储器和
通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
49.存储器,用于存放计算机程序;
50.处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的方法步骤。
51.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一所述的方法步骤。
52.本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的文件合并方法。
53.本技术实施例有益效果:
54.应用本技术实施例提供的方案合并文件时,可以在分布式存储系统中,查找文件大小不超过预设的单元存储阈值的文件,作为待合并文件,对各个待合并文件进行分组,得到多个文件组,分别对每一待合并文件组内各个待合并文件进行合并。其中,每一待合并文件组为:所得到的文件组中包含的待合并文件数量大于1的文件组,每一文件组中待合并文件的文件大小之和不超过单元存储阈值。单元存储阈值为:分布式存储系统中最小存储单元的存储空间的整数倍。由于每一文件组中待合并文件的文件大小之和不超过单元存储阈值,这样对每一待合并文件组内各个文件进行合并得到的合并后文件的文件大小也不超过单元存储阈值。对合并后文件进行存储时,可以占用不超过上述整数倍个最小存储单元。由此可见,应用本技术实施例提供的方案,基于文件大小对文件进行合并,对合并后的文件进行存储,可以提高对最小存储单元的利用率,进而可以减小文件对存储空间的消耗。
附图说明
55.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
56.图1为本技术实施例提供的一种文件合并方法的流程示意图;
57.图2为本技术实施例提供的一种文件分组方法的流程示意图;
58.图3为本技术实施例提供的另一种文件分组方法的流程示意图;
59.图4为本技术实施例提供的又一文件分组方法的流程示意图;
60.图5为本技术实施例提供的另一文件合并方法的流程示意图;
61.图6为本技术实施例提供的一种文件合并装置的结构示意图;
62.图7为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
63.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
64.为了减小分布式存储系统中文件对存储空间的消耗,本技术实施例提供了一种文
件合并方法、装置、电子设备及存储介质,下面分别进行详细描述。
65.参见图1,图1为本技术实施例提供的一种文件合并方法的流程示意图。该方法应用于分布式存储系统,例如可以应用于分布式存储系统的任一节点中,如管理节点。本技术的一个实施例中,上述分布式存储系统可以是基于spark等分布式计算架构的大数据平台中的存储系统。
66.具体的,文件合并方法包括如下步骤101至步骤103。
67.步骤101,查找文件大小不超过预设的单元存储阈值的文件,作为待合并文件。
68.其中,单元存储阈值为:分布式存储系统中最小存储单元的存储空间的整数倍。上述整数倍可以是2倍、3倍、5倍等。最小存储单元block的存储空间可以是16m、64m、128m等。单元存储阈值可以理解为:整数倍个最小存储单元block的存储空间之和。在block的存储空间为16m、上述整数倍为3倍的情况下,单元存储阈值为48m;在block的存储空间为64m、上述整数倍为4倍的情况下,单元存储阈值为256m。
69.具体的,可以在分布式存储系统存储的文件中,查找文件大小不超过单元存储阈值的文件,作为待合并文件。这样可以保证待合并文件的文件大小不超过单元存储阈值。
70.步骤102,对各个待合并文件进行分组,得到多个文件组。
71.其中,每一文件组中待合并文件的文件大小之和不超过单元存储阈值。这样在后续对文件组中待合并文件进行合并,得到的合并后文件的文件大小也不超过单元存储阈值,进而在对合并后文件进行存储时,所占用的最小存储单元block也不会超过上述整数倍个block。
72.本技术的一个实施例中,在对各个待合并文件进行分组时,可以首先按照每一文件组内包含待合并文件数量为预设数量的方式,随机对各个待合并文件进行分组。
73.然后计算每一文件组所包含待合并文件的文件大小之和,将文件大小之和超过单元存储阈值的文件组拆开,按照每一文件组内包含待合并文件数量为上一次分组时数量减一的方式,再次随机对拆开得到的待合并文件进行分组。循环执行该步骤,每次进行分组时所设定的文件组包含的待合并文件的数量逐一递减,直至上述数量减至2,分别将所剩余的每一待合并文件各自划分到一个文件组,实现对各个待合并文件进行分组。
74.本技术的一个实施例中,还可以按照将文件大小最大和文件大小最小的待合并文件进行分组匹配、且文件组内待合并文件大小之和不超过单元存储阈值的方式,对各个待合并文件进行分组。
75.步骤103,分别对每一待合并文件组内各个待合并文件进行合并。
76.其中,每一待合并文件组为:所得到的文件组中包含的待合并文件数量大于1的文件组。
77.具体的,在文件组中待合并文件的数量为1的情况下,无需对该文件组内的待合并文件进行合并;在文件组中待合并文件的数量大于1的情况下,可以对上述大于1个待合并文件进行合并,得到1个合并后文件。对于步骤102得到的文件组,可以从中选择包含的待合并文件数量大于1的文件组,作为待合并文件组,分别针对各个待合并文件组内的待合并文件进行合并。
78.本技术的一个实施例中,每一待合并文件组中待合并文件的数量可以大于预设的数量阈值,上述数量阈值的取值大于1。例如,上述数量阈值可以是3、5、6等。这样当文件组
内待合并文件的数量较少时,对该文件组内待合并文件进行合并所减少的存储资源较小。例如,假设文件组内存在两个待合并文件,原本每一文件占用一最小存储单元,若对上述两个文件进行合并,得到一个合并后文件,该合并后文件占用一个最小存储单元。这样虽然可以节省一个最小存储单元的存储空间,但是相比较执行合并操作带来的计算资源的损耗,所节省的存储资源带来的有益效果较小,因此可以不对上述两个文件进行合并。
79.当文件组内待合并文件的数量较多时,将该文件组作为待合并文件组,对该文件组内待合并文件进行合并,这样所节省的存储资源较大。例如,假设文件组内存在5个待合并文件,原本每一文件占用一最小存储单元,若对上述5个文件进行合并,得到一个合并后文件,该合并后文件占用一个最小存储单元。这样可以节省4个最小存储单元的存储空间,相比较执行合并操作带来的计算资源的损耗,所节省的存储资源带来的有益效果较大,因此可以对上述5个文件进行合并。
80.应用上述实施例提供的方案合并文件时,由于每一文件组中待合并文件的文件大小之和不超过单元存储阈值,这样对每一待合并文件组内各个文件进行合并得到的合并后文件的文件大小也不超过单元存储阈值。对合并后文件进行存储时,可以占用不超过上述整数倍个最小存储单元。由此可见,应用上述实施例提供的方案,基于文件大小对文件进行合并,对合并后的文件进行存储,可以提高对最小存储单元的利用率,进而可以减小文件对存储空间的消耗。
81.另一方面,对文件进行合并后,分布式存储系统中所存储的文件数量减少,这样在查询数据时,可以减少输入/输出操作。例如,假设原来的文件数量为100,在查询数据时,需要依次对100个文件进行读取,每次读取包含一个输入操作和一次输出操作,这样一共需要执行200次输入/输出操作。假设对文件进行合并后,将文件数量减少至50,这样在查询数据时,只需要执行100次输入/输出操作。进而,在输入/输出操作减少的情况下,在查询数据时由于输入/输出操作带来的时间损耗也会减少。可见,应用上述实施例提供的方案,还可以提高分布式存储系统中数据的查询效率。
82.本技术的一个实施例中,对于上述步骤102,在对待合并文件进行分组时,可以按照每一文件组内所包含待合并文件的文件大小之和趋近于单元存储阈值的原则,对各个待合并文件进行分组,得到多个文件组。
83.这样所得到的每一文件组中所包含的待合并文件的文件大小之和趋近于单元存储阈值,进而对文件组内待合并文件进行合并所得到的合并后文件的文件大小也趋近于单元存储阈值。由于单元存储阈值为:最小存储单元block的存储空间的整数倍,在对合并后文件进行存储时,可以充分利用整数倍个最小存储单元block的存储空间,进一步减小存储资源浪费,进而可以使得分布式存储系统可以存储更多的文件,减少分布式存储系统中存储空间的压力。
84.例如,假设已有的文件包括:p1(30m)、p2(15m)、p3(45m)。其中,p1、p2、p3表示待合并文件的标识,括号内的字符表示待合并文件的文件大小。预设的单元存储阈值为1个最小存储单元block的存储空间,1个最小存储单元block的存储空间为64m,因此单元存储阈值为64m。
85.按照现有的技术,在对已有的文件进行存储时,由于block是对文件进行存储的一种最小存储单元,每一文件占用一个或多个block的存储空间,上述3个文件的文件大小均
不超过最小存储单元block的存储空间,因此会占用3个最小存储单元block。
86.而按照本技术实施例提供的方案,由于上述3个文件的文件大小均不超过单元存储阈值60m,因此可以将上述3个文件作为待合并文件。由于p1(30m)与p2(15m)的文件大小之和为45m,p2(15m)与p3(45m)的文件大小之和为60m,均不超过单元存储阈值,因此可以将p1(30m)与p2(15m)划分到一个文件组,将p3(45m)划分到一个文件组;也可以将p1(30m)划分到一个文件组,将p2(15m)和p3(45m)划分到一个文件组。
87.按照上述文件大小之和趋近于单元存储阈值的原则,对待合并文件进行分组,由于p2(15m)与p3(45m)的文件大小之和60m更接近单元存储阈值64m,因此可以将p1(30m)划分为第一文件组,将p2(15m)、p3(45m)划分为第二文件组,将第二文件组作为待合并文件组,对待合并文件组内文件进行合并,可以得到合并后文件p’,合并后文件p’的文件大小为60m。在对文件p1(30m)和p’(60m)进行存储时,只需占用2个最小存储单元block。可见,应用本技术实施例提供的方案,可以减小文件对存储资源的占用,节省存储资源。
88.参见图2,图2为本技术实施例提供的一种文件分组方法的流程示意图,该方法包括如下步骤201至步骤203。
89.步骤201,将文件大小最大的一待合并文件划分到一新的文件组。
90.具体的,可以在待合并文件中查找文件大小最大的文件,将该文件划分到一个新的文件组;若待合并文件中存在多个文件大小最大的文件,则将其中任一文件大小最大的文件划分到一个新的文件组。
91.步骤202,针对当前待合并文件,判断已有的文件组中是否存在目标文件组,若存在,将当前待合并文件划分到目标文件组,若不存在,则将当前待合并文件划分到新的文件组。
92.其中,当前待合并文件为:未划分到文件组的待合并文件中文件大小最大的一文件,目标文件组为:已包含的待合并文件与当前待合并文件的文件大小之和不超过单元存储阈值的文件组。
93.具体的,可以在未划分到文件组的待合并文件中,查找文件大小最大的任意一个文件,作为当前待合并文件。然后依次判断已有的文件组中是否存在可以容纳当前待合并文件的目标文件组,也就是查找已有的文件组中,是否存在加入当前待合并文件后所包含的待合并文件的文件大小之和不超过单元存储阈值的文件组。若存在,则将该文件组作为目标文件组,并将当前待合并文件划分到目标文件组内。若存在多个目标文件组,则可以将当前待合并文件划分到任一目标文件组内。若不存在,则说明已有的文件组中不存在可以容纳当前待合并文件的文件组,因此可以将当前待合并文件划分到一个新的文件组内。
94.步骤203,将当前待合并文件更新为未划分到文件组的待合并文件中文件大小最大的一文件,返回步骤202,直至各个待合并文件均被划分到文件组。
95.具体的,可以将当前待合并文件更新为新的未划分到文件组的待合并文件中文件大小最大的一文件,然后返回步骤202,对更新后的当前待合并文件进行分组,直至遍历每一待合并文件,为每一待合并文件划分文件组。
96.这样可以使得每一文件组中所包含的待合并文件的文件大小之和趋近于单元存储阈值,进而对文件组内待合并文件进行合并所得到的合并后文件的文件大小也趋近于单元存储阈值。由于单元存储阈值为:最小存储单元block的存储空间的整数倍,在对合并后
文件进行存储时,可以充分利用整数倍个最小存储单元block的存储空间,进而减小存储资源浪费。
97.参见图3,图3为本技术实施例提供的另一种文件分组方法的流程示意图,对于上述步骤202,在对当前待合并文件进行分组时,可以包括如下步骤2021至步骤2023。
98.步骤2021,针对当前待合并文件,计算任一已有的文件组内已包含的待合并文件与当前待合并文件的文件大小之和。
99.具体的,可以在已有的文件组中,选择任一文件组,计算该文件组内已包含的待合并文件与当前待合并文件的文件大小之和。
100.步骤2022,若所得文件大小之和不超过单元存储阈值,则将任一已有的文件组作为目标文件组,并将当前待合并文件划分到目标文件组内。
101.具体的,若上述文件大小之和不超过单元存储阈值,说明该文件组可以容纳当前待合并文件,因此将该文件组作为目标文件组,并将当前待合并文件划分到该目标文件组内。这种情况下无需继续对其余的文件组进行计算,可以直接执行步骤203。
102.步骤2023,若所得文件大小之和超过单元存储阈值,则将任一已有的文件组更新为已有的文件组中未计算过文件大小之和的一个文件组,返回步骤2021,直至遍历所有已有的文件组,在已有的文件组中不存在目标文件组的情况下,则将当前待合并文件划分到新的文件组内。
103.具体的,若上述文件大小超过单元存储阈值,则说明该文件组难以容纳当前待合并文件,因此将任一文件组更新为新的、已有的文件组中未计算过文件大小之和的一个文件组,返回步骤2021,计算更新后的任一文件组内所包含的待合并文件与当前待合并文件的文件大小之和,直至遍历所有已有的文件组。
104.在所有已有的文件组中均不存在目标文件组的情况下,说明已有的文件组中不存在可以容纳当前待合并文件的文件组,因此将当前待合并文件划分到新的文件组内。
105.下面再通过具体实例对上述步骤201至步骤203进行描述。
106.例如,假设待合并文件包括h1(50m)、h2(35m)、h3(15m)、h4(10m)、h5(25m),其中,h1、h2、h3、h4、h5表示待合并文件的标识,括号内的字符表示待合并文件的文件大小。单元存储阈值为64m。
107.首先将文件大小最大的一待合并文件划分到一新的文件组,也就是将h1(50m)划分到一个新的文件组,记作第一文件组,第一文件组内所包含待合并文件的文件大小为50m;
108.未划分到文件组的待合并文件中,h2(35m)的文件大小最大,因此将h2(35m)作为当前待合并文件,可知已有的第一文件组难以容纳h2(35m),因此将h2(35m)划分到一个新的文件组,记作第二文件组,第二文件组内所包含待合并文件的文件大小为35m;
109.未划分到文件组的待合并文件中,h5(25m)的文件大小最大,因此将h5(25m)作为当前待合并文件,可知已有的文件组中,第二文件组可以容纳h5(25m),因此将h5(25m)划分到第二文件组,此时第二文件组包含h2(35m)和h5(25m),第二文件组内所包含待合并文件的文件大小为60m;
110.未划分到文件组的待合并文件中,h3(15m)的文件大小最大,因此将h3(15m)作为当前待合并文件,可知已有的文件组中,第一文件组、第二文件组均难以容纳h3(15m),因此
将h3(15m)划分到一个新的文件组,记作第三文件组,第三文件组内所包含待合并文件的文件大小为15m;
111.未划分到文件组的待合并文件中,h4(10m)的文件大小最大,因此将h4(10m)作为当前待合并文件,可知已有的文件组中,第一文件组、第二文件组均难以容纳h4(10m),第三文件组可以容纳h4(10m),因此将h4(10m)划分到第三文件组,第三文件组内包含h3(15m)和h4(10m),所包含待合并文件的文件大小为25m。
112.最终,将h3(15m)、h4(10m)划分到一文件组,将h2(35m)、h5(25m)划分到一文件组,将h1(50m)划分到一文件组。
113.参见图4,图4为本技术实施例提供的又一文件分组方法的流程示意图,对于上述步骤102,对待待合并文件进行分组时,可以包括如下步骤401至步骤403。
114.步骤401,按照文件大小递增或递减的顺序,将各个待合并文件放入文件队列内。
115.例如,假设存在待合并文件s1(30m)、s2(55m)、s3(45m)、s4(15m),其中,s1、s2、s3、s4表示待合并文件的标识,括号内的字符表示待合并文件的文件大小。按照文件大小递增的顺序将各个待合并文件放入文件队列内,则可以得到文件队列:
116.s4、s1、s3、s2
117.步骤402,按照从队列头到队列尾的顺序,从文件队列内取出一待合并文件,将该待合并文件置入一文件箱内。
118.其中,上述文件箱可以理解为一文件组,每一文件箱所能容纳的待合并文件的文件大小为单元存储阈值。将取出的文件置入一文件箱,可以理解为将取出的文件划分为一文件组。
119.在文件队列内待合并文件的排列顺序为按照文件大小递增的顺序的情况下,按照从队列头到队列尾的顺序,从文件队列内取出的一待合并文件为文件大小最小的文件;在文件队列内待合并文件的排列顺序为按照文件大小递减的顺序的情况下,按照从队列头到队列尾的顺序,从文件队列内取出的一待合并文件为文件大小最大的文件。
120.步骤403,按照从队列头到队列尾的顺序,从文件队列内取出一待合并文件,判断已有的文件箱中是否存在可以容纳该待合并文件的目标文件箱,若存在,将该待合并文件置入目标文件箱,若不存在,则创建一个新的文件箱,将该待合并文件置入新的文件箱内,返回步骤402,直至将所有待合并文件置入文件箱内。
121.其中,若已有的文件箱中存在的待合并文件与所取出的待合并文件的文件大小之和不超过单元存储阈值,则认为该文件箱可以容纳所取出的待合并文件。若已有的文件箱中存在的待合并文件与所取出的待合并文件的文件大小之和超过单元存储阈值,则认为该文件箱难以容纳所取出的待合并文件。
122.具体的,针对所取出的待合并文件,可以按照文件箱的创建顺序,依次对各个文件箱进行判断,直至确定可以容纳该待合并文件的目标文件箱,将该待合并文件置入目标文件箱,返回步骤402。
123.若遍历所有文件箱后,仍未确定可以容纳该待合并文件的目标文件箱,则说明已有的文件箱中不存在可以容纳该待合并文件的文件箱,因此创建一个新的文件箱,将该待合并文件置入新的文件箱内,返回步骤402。
124.直至将所有待合并文件置入文件箱,将每一文件箱内所包含的待合并文件作为一
个文件组,从而实现将所有待合并文件进行分组,得到多个文件组。
125.本技术的一个实施例中,对于上述步骤102,在对待合并文件进行分组时,可以按照文件大小递增或递减的顺序,将各个待合并文件放入文件队列,按照从队列头到队列尾的顺序,将文件队列中位置相邻、且文件大小之和不超过单元存储阈值的待合并文件划分到一个文件组。
126.例如,假设文件队列内各个待合并文件依次为:
127.f1(50m)、f2(30m)、f3(30m)、f4(25m)、f5(10m)、f6(5m)
128.其中,f1、f2、f3、f4、f5、f6表示待合并文件的标识,括号内的字符表示待合并文件的文件大小。假设单元存储阈值为64m,对上述待合并文件进行分组,可知,f1为一个文件组,f2、f3为一个文件组,f4、f5、f6为一个文件组。
129.本技术的一个实施例中,对于上述步骤103,在对待合并文件组内待合并文件进行合并时,可以针对每一待合并文件组,对该待合并文件组内各个待合并文件进行合并,将合并得到的临时文件存储至预先创建的中转目录下,在对该待合并文件组内待合并文件合并成功的情况下,删除该文件组所包含的各个待合并文件,并将中转目录下存储的临时文件转存至原始目录。
130.其中,原始目录为:删除之前各个待合并文件所在的目录。
131.若对待合并文件组内待合并文件合并失败,则可以清理中转目录中存储的临时文件,还可以生成合并失败提示信息,提示工作人员合并失败。
132.这样利用合并后的文件替换原来的待合并文件,可以减小文件对存储资源的消耗,节省存储空间。在合并失败的情况下,还可以保留原来的待合并文件,避免文件丢失,提高文件管理的可靠性。
133.本技术的一个实施例中,在对待合并文件组内待合并文件进行合并时,可以分别针对各个待合并文件组创建合并任务,并发执行各个合并任务对各个待合并文件组内各个待合并文件进行合并。这样可以并发对各个待合并文件组内的待合并文件进行合并,提高文件合并效率,节省文件合并时间。
134.例如,在基于spark分布式计算架构的大数据平台中,可以创建多个合并任务,每一合并任务用于对一待合并文件组内的待合并文件进行合并,可以并行执行各个合并任务,这样可以实现并发对各个待合并文件组内的待合并文件进行合并。
135.除此之外,还可以依次对各个待合并文件组内的待合并文件进行合并,这样每次只对一个待合并文件组内的待合并文件进行合并,可以减小每次执行合并任务时带来的资源损耗。
136.本技术的一个实施例中,对于上述步骤101,在查找待合并文件时,可以查找文件大小不超过预设的文件大小阈值的文件,作为待合并文件。
137.其中,文件大小阈值为:预设的单元存储阈值与不大于1的预设系数的乘积。上述预设系数的取值可以是0.7、0.8、0.9等。例如,假设单元存储阈值为60m,预设系数为0.9,则文件大小阈值为54m。这样在存储系统中查找文件大小不超过文件大小阈值的文件,可以进一步减小待合并文件的文件大小,进而在后续对文件进行分组时,可以提高每一文件组中包含至少2个待合并文件的概率,减小由于待合并文件较大导致文件组内只包含一个待合并文件的可能性。
138.参见图5,图5为本技术实施例提供的另一文件合并方法的流程示意图,该方法包括如下步骤501至步骤504。
139.步骤501,查找文件大小不超过预设的文件大小阈值的文件,作为待合并文件。
140.其中,文件大小阈值为:预设的单元存储阈值与不大于1的预设系数的乘积。单元存储阈值为:分布式存储系统中最小存储单元的存储空间的整数倍。
141.步骤502,按照每一文件组内所包含待合并文件的文件大小之和趋近于单元存储阈值的原则,对各个待合并文件进行分组,得到多个文件组。
142.其中,每一文件组中待合并文件的文件大小之和不超过单元存储阈值。具体的,对待合并文件进行分组的方式同上述文件分组方法类似,在此不作赘述。
143.步骤503,并发对每一待合并文件组内各个待合并文件进行合并,将合并得到的临时文件存储至预先创建的中转目录下。
144.其中,每一待合并文件组中待合并文件的数量大于1。
145.步骤504,针对每一待合并文件组,在对该待合并文件组内待合并文件合并成功的情况下,删除该文件组所包含的各个待合并文件,并将中转目录下存储的临时文件转存至原始目录,否则清理中转目录中存储的临时文件,并生成合并失败提示信息。
146.应用上述实施例提供的方案合并文件时,由于每一文件组中待合并文件的文件大小之和不超过单元存储阈值,这样对每一待合并文件组内各个文件进行合并得到的合并后文件的文件大小也不超过单元存储阈值。对合并后文件进行存储时,可以占用不超过上述整数倍个最小存储单元。由此可见,应用上述实施例提供的方案,基于文件大小对文件进行合并,对合并后的文件进行存储,可以提高对最小存储单元的利用率,进而可以减小文件对存储空间的消耗。
147.参见图6,图6为本技术实施例提供的一种文件合并装置的结构示意图,所述装置应用于分布式存储系统,所述装置包括:
148.文件查找模块601,用于查找文件大小不超过预设的单元存储阈值的文件,作为待合并文件,其中,所述单元存储阈值为:所述分布式存储系统中最小存储单元的存储空间的整数倍;
149.文件分组模块602,用于对各个待合并文件进行分组,得到多个文件组,其中,每一文件组中待合并文件的文件大小之和不超过所述单元存储阈值;
150.文件合并模块603,用于分别对每一待合并文件组内各个待合并文件进行合并,其中,每一待合并文件组为:所得到的文件组中包含的待合并文件数量大于1的文件组。
151.本技术的一个实施例中,所述文件分组模块602,具体用于:
152.按照每一文件组内所包含待合并文件的文件大小之和趋近于所述单元存储阈值的原则,对各个待合并文件进行分组,得到多个文件组。
153.本技术的一个实施例中,所述文件分组模块602,包括:
154.第一文件分组单元,用于将文件大小最大的一待合并文件划分到一新的文件组;
155.第二文件分组单元,用于针对当前待合并文件,判断已有的文件组中是否存在目标文件组,若存在,将所述当前待合并文件划分到所述目标文件组,若不存在,则将所述当前待合并文件划分到新的文件组,其中,所述当前待合并文件为:未划分到文件组的待合并文件中文件大小最大的一文件,所述目标文件组为:已包含的待合并文件与所述当前待合
architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
173.通信接口用于上述电子设备与其他设备之间的通信。
174.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
175.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
176.在本技术提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一文件合并方法的步骤。
177.在本技术提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一文件合并方法。
178.应用上述实施例提供的方案合并文件时,可以在分布式存储系统中,查找文件大小不超过预设的单元存储阈值的文件,作为待合并文件,对各个待合并文件进行分组,得到多个文件组,分别对每一待合并文件组内各个待合并文件进行合并。其中,每一待合并文件组为:所得到的文件组中包含的待合并文件数量大于1的文件组,每一文件组中待合并文件的文件大小之和不超过单元存储阈值。单元存储阈值为:分布式存储系统中最小存储单元的存储空间的整数倍。由于每一文件组中待合并文件的文件大小之和不超过单元存储阈值,这样对每一待合并文件组内各个文件进行合并得到的合并后文件的文件大小也不超过单元存储阈值。对合并后文件进行存储时,可以占用不超过上述整数倍个最小存储单元。由此可见,应用上述实施例提供的方案,基于文件大小对文件进行合并,对合并后的文件进行存储,可以提高对最小存储单元的利用率,进而可以减小文件对存储空间的消耗。
179.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
180.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实
体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
181.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、电子设备实施例、计算机可读存储介质实施例、计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
182.以上所述仅为本技术的较佳实施例,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本技术的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜