CN113590566B - 基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质 - Google Patents
基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113590566B CN113590566B CN202110699134.7A CN202110699134A CN113590566B CN 113590566 B CN113590566 B CN 113590566B CN 202110699134 A CN202110699134 A CN 202110699134A CN 113590566 B CN113590566 B CN 113590566B
- Authority
- CN
- China
- Prior art keywords
- file
- combined
- queues
- 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
Links
- 238000003860 storage Methods 0.000 title claims abstract description 53
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000005457 optimization Methods 0.000 claims abstract description 19
- 230000006835 compression Effects 0.000 claims abstract description 13
- 238000007906 compression Methods 0.000 claims abstract description 13
- 238000009826 distribution Methods 0.000 claims abstract description 12
- 238000001914 filtration Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 10
- 230000006978 adaptation Effects 0.000 claims description 9
- 238000012360 testing method Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 238000002474 experimental method Methods 0.000 description 7
- HAXFWIACAGNFHA-UHFFFAOYSA-N aldrithiol Chemical compound C=1C=CC=NC=1SSC1=CC=CC=N1 HAXFWIACAGNFHA-UHFFFAOYSA-N 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1724—Details of de-fragmentation performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质,其方法包括:基于小文件分配算法将待合并的小文件分配到待合并队列全集中的待合并队列中;创建相应的堆以及堆全集并为每个堆初始化文件列表和索引列表;为每个待合并的小文件创建单个文件索引;将待合并队列中的小文件存储在相应的堆的文件列表中,同时将每个堆中所有小文件的文件索引存放于相应的索引列表中;基于压缩策略将每个堆中的小文件合并为一个SequenceFile文件;创建一个全局索引文件,使用追加写操作将每个堆对应的索引列表中的内容写入全局索引文件;将所有的SequenceFile文件和全局索引文件上传至HDFS完成优化。本发明能够提高了文件存储和访问效率,改进了HDFS对于海量小文件的存取性能。
Description
技术领域
本发明涉及一种基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质,属于大数据存储技术领域。
背景技术
在实际应用中,小文件的数量远远多于大文件的数量。尤其在互联网应用中,增长最快的数据则是大量小文件,诸如网页、小文本、小图像等。HDFS在处理海量小文件时会产生一些问题:1)占用大量NameNode内存;2)对小文件的访问效率低;3)DataNode硬盘空间利用率低。针对小文件问题,目前有很多解决方案,主要方法是合并小文件,并且存储合并后的大文件。Hadoop自身提供的解决方案是将小文件合并成SequenceFile,但是SequenceFile没有建立大文件和小文件之间的映射关系,因此文件访问效率很低。MapFile引入了索引机制,可以通过索引文件去访问一个特定的文件。与SequenceFile相比,MapFile减少了文件的访问延迟。但由于MapFile自带索引,且索引间隔为128字节,所以大型MapFile文件的索引通常会占用NameNode很大的内存。
为了解决上述问题,本申请提出了一种基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质,能够显著减少了NameNode的内存消耗,提高了文件存储和访问效率,有效改进了HDFS对于海量小文件的存取性能。
为达到上述目的,本发明是采用下述技术方案实现的:
第一方面,本发明提供了一种基于堆结构的SequenceFile存储优化方法,用于优化HDFS存取海量小文件的性能,包括:
基于预设标准从上传到HDFS中的每个文件过滤出待合并的小文件;
基于小文件分配算法将待合并的小文件分配到待合并队列全集中的待合并队列中;
遍历待合并队列全集中的待合并队列,创建相应的堆以及堆全集并为每个堆初始化一个文件列表和一个索引列表;
遍历待合并队列全集中的待合并队列,为每个待合并的小文件创建单个文件索引;
将待合并队列中的小文件存储在相应的堆的文件列表中,同时将每个堆中所有小文件的文件索引存放于相应的索引列表中;
遍历堆全集中的堆,基于压缩策略将每个堆中的小文件合并为一个SequenceFile文件;
创建一个全局索引文件,使用追加写操作将每个堆对应的索引列表中的内容写入全局索引文件;
将所有的SequenceFile文件和全局索引文件上传至HDFS完成优化。
优选的,所述基于预设标准从上传到HDFS中的每个文件过滤出小文件包括:以预设大小的数据块为标准,上传到HDFS中的每个文件小于数据块大小的为小文件。
优选的,所述基于小文件分配算法将待合并的小文件分配到待合并队列全集中的待合并队列中包括:当检测到待合并的小文件,则考察当前待合并队列全集中所有待合并队列,选出最合适的待合并队列来存储当前待合并的小文件;
其中,选出最合适的待合并队列包括:
当待合并队列全集为空时,说明当前没有符合条件的待合并队列,需要创建新的待合并队列,并将新的待合并队列作为最合适的待合并队列;
若当前待合并队列全集不为空,则遍历待合并队列全集中的待合并队列,通过最差适应策略选出最适合的待合并队列;
其中,通过最差适应策略选出最适合的待合并队列包括:
从待合并队列全集中的待合并队列中找出能够容纳当前小文件的待合并队列,然后在其中选择剩余空间最大的待合并队列作为最合适的待合并队列。
优选的,所述文件索引的结构包括每个小文件所在的堆ID、文件名、偏移量以及文件大小,其中,所述堆ID是堆在全局范围的唯一标志符,其按照遍历待合并队列全集中的待合并队列中的小文件的顺序递增;所述偏移量是文件地址与堆起始地址之间的距离。
优选的,所述基于压缩策略将每个堆中的小文件合并为一个SequenceFile文件包括:调用SequenceFile.Writer类中的函数,将每个堆中的小文件合并为一个SequenceFile文件,并使用block压缩方式进一步减小SequenceFile文件的大小。
优选的,所述全局索引文件以<PileID,filename,offset,filelength>的格式记录所有堆的索引列表,其中PileID表示堆ID,filename表示文件名,offset表示偏移量,filelength表示文件大小。
第二方面,本发明提供了一种基于堆结构的SequenceFile存储优化装置,所述装置包括:
小文件过滤模块,用于基于预设标准从上传到HDFS中的每个文件过滤出待合并的小文件;
小文件分配模块,用于基于小文件分配算法将待合并的小文件分配到待合并队列全集中的待合并队列中;
堆创建模块,用于遍历待合并队列全集中的待合并队列,创建相应的堆以及堆全集并为每个堆初始化一个文件列表和一个索引列表;
索引创建模块,用于遍历待合并队列全集中的待合并队列,为每个待合并的小文件创建单个文件索引;
堆存储模块,用于将待合并队列中的小文件存储在相应的堆的文件列表中,同时将每个堆中所有小文件的文件索引存放于相应的索引列表中;
小文件合并模块,用于遍历堆全集中的堆,基于压缩策略将每个堆中的小文件合并为一个SequenceFile文件;
索引合并模块,用于创建一个全局索引文件,使用追加写操作将每个堆对应的索引列表中的内容写入全局索引文件;
上传模块,用于将所有的SequenceFile文件和全局索引文件上传至HDFS完成优化。
第三方面,本发明提供了一种基于堆结构的SequenceFile存储优化设备,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行根据上述任一项所述方法的步骤。
第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。
与现有技术相比,本发明所达到的有益效果:
本发明提供的一种基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质,使用小文件分配算法中的最差适应策略将小文件分配到待合并队列中,利用最差适应策略减少了合并文件的内部碎片。利用堆存储小文件及其索引。以堆为单位,将堆中小文件合并成SequenceFile并压缩,减少了合并文件占用的内存。将所有小文件索引合并为一个全局索引文件,减少了文件索引占用的内存。通过索引文件访问小文件,提高了文件访问效率。实验结果表明,该方法较传统的小文件存储问题解决方法,显著减少了NameNode的内存消耗,提高了文件存储和访问效率,有效改进了HDFS对于海量小文件的存取性能。
附图说明
图1是本发明提供的基于堆结构的SequenceFile存储优化方法的流程图;
图2是本发明实施例提供的基于堆结构的SequenceFile文件存储优化方法实现流程图;
图3是本发明实施例提供的堆的结构示意图;
图4是本发明实施例提供的全局索引文件结构示意图;
图5是本发明实施例提供的NameNode内存消耗对比图;
图6是本发明实施例提供的写入文件时间对比图;
图7是本发明实施例提供的读取文件时间对比图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例一:
本发明实施例提供了一种基于堆结构的SequenceFile存储优化方法,用于优化HDFS存取海量小文件的性能。
SequenceFile文件是Hadoop用来存储二进制形式的[Key,Value]对而设计的一种平面文件(Flat File)。可以把SequenceFile当做是一个容器,把所有的文件打包到SequenceFile类中可以高效的对小文件进行存储和处理。
HDFSHadoop分布式文件系统(HDFS)是指被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统(Distributed File System)。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。HDFS是Apache Hadoop Core项目的一部分。
如图1所示,基于堆结构的SequenceFile存储优化方法的步骤为:
步骤1、基于预设标准从上传到HDFS中的每个文件过滤出待合并的小文件;
以预设大小的数据块为标准,上传到HDFS中的每个文件小于数据块大小的为小文件。
步骤2、基于小文件分配算法将待合并的小文件分配到待合并队列全集中的待合并队列中;
当检测到待合并的小文件,则考察当前待合并队列全集中所有待合并队列,选出最合适的待合并队列来存储当前待合并的小文件;
其中,选出最合适的待合并队列包括:
当待合并队列全集为空时,说明当前没有符合条件的待合并队列,需要创建新的待合并队列,并将新的待合并队列作为最合适的待合并队列;
若当前待合并队列全集不为空,则遍历待合并队列全集中的待合并队列,通过最差适应策略选出最适合的待合并队列;
其中,通过最差适应策略选出最适合的待合并队列包括:
从待合并队列全集中的待合并队列中找出能够容纳当前小文件的待合并队列,然后在其中选择剩余空间最大的待合并队列作为最合适的待合并队列。
步骤3、遍历待合并队列全集中的待合并队列,创建相应的堆以及堆全集并为每个堆初始化一个文件列表和一个索引列表。
步骤4、遍历待合并队列全集中的待合并队列,为每个待合并的小文件创建单个文件索引;
文件索引的结构包括每个小文件所在的堆ID、文件名、偏移量以及文件大小,其中,堆ID是堆在全局范围的唯一标志符,其按照遍历待合并队列全集中的待合并队列中的小文件的顺序递增;偏移量是文件地址与堆起始地址之间的距离。
步骤5、将待合并队列中的小文件存储在相应的堆的文件列表中,同时将每个堆中所有小文件的文件索引存放于相应的索引列表中;
步骤6、遍历堆全集中的堆,基于压缩策略将每个堆中的小文件合并为一个SequenceFile文件;
调用SequenceFile.Writer类中的函数,将每个堆中的小文件合并为一个SequenceFile文件,并使用block压缩方式进一步减小SequenceFile文件的大小。
步骤7、创建一个全局索引文件,使用追加写操作将每个堆对应的索引列表中的内容写入全局索引文件;
全局索引文件以<PileID,filename,offset,filelength>的格式记录所有堆的索引列表,其中PileID表示堆ID,filename表示文件名,offset表示偏移量,filelength表示文件大小。
步骤8、将所有的SequenceFile文件和全局索引文件上传至HDFS完成优化。
实验验证过程:
实验集群由一个主节点、两个从节点组成。主节点配置:内存为8GB,CPU为Intel(R)Core(TM)i5-8257U 2.40GHz,操作系统为Ubuntu 20.04.1 64位。从节点和客户端配置:内存为4GB,CPU为Intel(R)Core(TM)i5-8257U 2.40GHz,操作系统为Ubuntu 20.04.1 64位。实验的Hadoop版本是2.9.2,Java运行版本是1.8.0_261。HDFS中数据块默认采用64MB,每个数据块的副本数量为2。
实验使用的数据集是从UCI KDD Archive下载的NSF Research AwardsAbstracts 1990-2003。数据集包含小文件总数53,000个,其中0KB-3KB的文件占比29.3%,3KB-6KB的文件占比45.9%,6KB-10KB的文件占比20.3%,10KB-1MB的文件占比3.8%,大于1MB的文件占比0.7%。从数据集中随机选取10000,20000,30000,40000,50000个小文件作为5个测试集,分别进行测试。
如图2所示,基于堆结构的SequenceFile文件存储优化方法实现流程图,主要包括如下部分个单元:
(1)小文件分配单元;
(2)堆生成单元;
(3)文件合并单元;
(4)文件读取单元。
小文件分配单元,进行小文件分配时,包括以下步骤:
(1):首先判断测试集中的每个文件是否是小文件,从而确定是否需要进行合并过程。以数据块大小64MB为标准,来判断文件是否是小文件。小于数据块大小的文件是小文件,需要进行合并。反之则是大文件,不需要进行合并,直接将文件上传到HDFS即可。
(2):初始化待合并队列Q和合并队列全集QList,合并队列全集负责存储多个合并队列,待合并队列负责存储待合并的小文件。
(3):如果检测到一个文件是小文件,则考察当前所有合并队列,选出最合适的队列来存储当前小文件。
(4):当合并队列全集为空时,说明当前没有符合条件的合并队列,需要创建新的合并队列,并将当前小文件添加到合并队列中。若当前合并队列全集不为空,则遍历合并队列全集中的合并队列,通过最差适应策略选出最适合存储当前小文件的合并队列。
(5):先从所有合并队列中找出能够容纳当前小文件的队列,然后在其中选择剩余空间最大的合并队列,将小文件添加到这个队列中。
堆生成单元,进行堆生成时,包括以下步骤:
(1):遍历队列全集(QList),堆生成单元开始建立堆。
(2):初始化堆的文件列表和索引列表。
(3):遍历待合并队列中的小文件,将小文件插入到当前堆的文件列表中。计算文件大小,根据小文件的顺序和大小,从队列开始形成一个偏移量。创建一个新的单个文件索引,索引内容包括小文件的大小和偏移量以及小文件所在的堆ID,将该索引加入到当前堆的索引列表中。
(4):存储完小文件及其索引后,将堆加入到堆全集(PList)中,将堆全集发送到文件合并单元。堆的结构如图3所示。
文件合并单元,进行文件合并时,包括以下步骤:
(1):遍历来自堆生成单元的堆全集PList。
(2):将每个堆中的小文件合并为一个SequenceFile,小文件的实际内容保存在合并后的SequenceFile文件中,使用压缩策略进一步减小SequenceFile的大小。
(3):创建全局索引文件,获取每个堆的索引列表,通过追加写操作向全局索引文件中添加单个文件索引。合并后的全局索引文件以<PileID,filename,offset,filelength>的格式记录所有小文件的索引。全局索引文件结构如图4所示。
(4):将合并后的SequenceFile文件和全局索引文件上传到HDFS。
(5):控制台输出上传每个测试集的时间消耗,通过HDFS可视化管理界面查看NameNode内存占用情况。
文件读取单元,进行文件读取时,包括以下步骤:
(1):客户端在读取小文件时,根据PileID查找到小文件所在的堆。
(2):根据全局索引文件获得该堆的索引列表。
(3):由小文件偏移量和长度导出小文件的结束位置为“offset+filelength”。
(4):通过小文件的起始位置和结束位置得到合并后的SequenceFile中的小文件。
(5):控制台输出下载每个测试集的时间消耗。
本发明所用的两个小文件存储对比方法分别为:原始HDFS存储和DivyashikhaSethia等人在”Optimized MapFile based Storage of Small files in Hadoop.InCCGRID,2017.”中提出的小文件存储优化方法,简称OMSS。以NameNode的内存占用、文件上传时间和读取时间等数据作为实验参考指标。
(1)NameNode内存消耗实验结果与分析
为了验证OPSS算法对减少NameNode内存消耗的效果,实验对5个测试集分别进行测试。如5所示,当测试文件数为50000时,使用原始HDFS写入文件,NameNode内存消耗为418.29MB,占用的数据块数量为10511个;使用OMSS算法写入文件,NameNode内存消耗为86.42MB,合并后的文件占用的数据块数量为10个;使用OPSS算法写入文件,NameNode内存消耗为64.13MB,合并后的文件占用的数据块数量为6个。
(2)文件写入到HDFS的时间消耗实验结果与分析
为了验证OPSS算法对提升小文件存储效率的效果,实验测试原始HDFS、OMSS算法和OPSS算法将文件写入到HDFS的时间成本。对5个测试集分别重复实验3次,计算写入文件的平均时间,测试结果如图6所示。当测试文件数为50000时,原始HDFS的写入时间为426,765ms,OMSS算法的写入时间减少至35,677ms,OPSS算法的写入时间进一步减少至28,629ms。
(3)文件访问时间消耗的实验结果与分析
本实验用于验证OPSS算法对提升小文件访问效率的效果。与写入实验类似,用3种方式分别对5个测试集进行访问操作。重复3次,并计算每种访问方式的平均时间,测试结果如图7所示。当测试文件数为50000时,对于原始HDFS,文件的平均访问时间为73,813m,OMSS为5,659ms,OPSS为5,099ms。OPSS算法访问文件的时间相比于原始HDFS和OMSS算法都降低了。
本发明相比于已有的小文件合并方法,NameNode消耗的内存更少,写入和读取文件的效率更高。可将该方法应用于HDFS对海量小文件的存取过程,减少NameNode的内存消耗,提高小文件的存储和访问效率。
实施例二:
本发明实施例提供了一种基于堆结构的SequenceFile存储优化装置,包括:
小文件过滤模块,用于基于预设标准从上传到HDFS中的每个文件过滤出待合并的小文件;
小文件分配模块,用于基于小文件分配算法将待合并的小文件分配到待合并队列全集中的待合并队列中;
堆创建模块,用于遍历待合并队列全集中的待合并队列,创建相应的堆以及堆全集并为每个堆初始化一个文件列表和一个索引列表;
索引创建模块,用于遍历待合并队列全集中的待合并队列,为每个待合并的小文件创建单个文件索引;
堆存储模块,用于将待合并队列中的小文件存储在相应的堆的文件列表中,同时将每个堆中所有小文件的文件索引存放于相应的索引列表中;
小文件合并模块,用于遍历堆全集中的堆,基于压缩策略将每个堆中的小文件合并为一个SequenceFile文件;
索引合并模块,用于创建一个全局索引文件,使用追加写操作将每个堆对应的索引列表中的内容写入全局索引文件;
上传模块,用于将所有的SequenceFile文件和全局索引文件上传至HDFS完成优化。
实施例三:
本发明实施例提供了一种基于堆结构的SequenceFile存储优化设备,包括处理器及存储介质;
存储介质用于存储指令;
处理器用于根据指令进行操作以执行根据实施例一中任一项方法的步骤。
实施例四:
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现实施例一中任一项方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (9)
1.一种SequenceFile存储优化方法,用于优化HDFS存取海量小文件的性能,其特征在于,包括:
基于预设标准从上传到HDFS中的每个文件过滤出待合并的小文件;
基于小文件分配算法将待合并的小文件分配到待合并队列全集中的待合并队列中;
遍历待合并队列全集中的待合并队列,创建相应的堆以及堆全集并为每个堆初始化一个文件列表和一个索引列表;
遍历待合并队列全集中的待合并队列,为每个待合并的小文件创建单个文件索引;
将待合并队列中的小文件存储在相应的堆的文件列表中,同时将每个堆中所有小文件的文件索引存放于相应的索引列表中;
遍历堆全集中的堆,基于压缩策略将每个堆中的小文件合并为一个SequenceFile文件;
创建一个全局索引文件,使用追加写操作将每个堆对应的索引列表中的内容写入全局索引文件;
将所有的SequenceFile文件和全局索引文件上传至HDFS完成优化。
2.根据权利要求1所述的一种SequenceFile存储优化方法,其特征在于,所述基于预设标准从上传到HDFS中的每个文件过滤出小文件包括:以预设大小的数据块为标准,上传到HDFS中的每个文件小于数据块大小的为小文件。
3.根据权利要求1所述的一种SequenceFile存储优化方法,其特征在于,所述基于小文件分配算法将待合并的小文件分配到待合并队列全集中的待合并队列中包括:当检测到待合并的小文件,则考察当前待合并队列全集中所有待合并队列,选出最合适的待合并队列来存储当前待合并的小文件;
其中,选出最合适的待合并队列包括:
当待合并队列全集为空时,说明当前没有符合条件的待合并队列,需要创建新的待合并队列,并将新的待合并队列作为最合适的待合并队列;
若当前待合并队列全集不为空,则遍历待合并队列全集中的待合并队列,通过最差适应策略选出最适合的待合并队列;
其中,通过最差适应策略选出最适合的待合并队列包括:
从待合并队列全集中的待合并队列中找出能够容纳当前小文件的待合并队列,然后在其中选择剩余空间最大的待合并队列作为最合适的待合并队列。
4.根据权利要求1所述的一种SequenceFile存储优化方法,其特征在于,所述文件索引的结构包括每个小文件所在的堆ID、文件名、偏移量以及文件大小,其中,所述堆ID是堆在全局范围的唯一标志符,其按照遍历待合并队列全集中的待合并队列中的小文件的顺序递增;所述偏移量是文件地址与堆起始地址之间的距离。
5.根据权利要求1所述的一种SequenceFile存储优化方法,其特征在于,所述基于压缩策略将每个堆中的小文件合并为一个SequenceFile文件包括:调用SequenceFile.Writer类中的函数,将每个堆中的小文件合并为一个SequenceFile文件,并使用block压缩方式进一步减小SequenceFile文件的大小。
6.根据权利要求1所述的一种SequenceFile存储优化方法,其特征在于,所述全局索引文件以<PileID,filename,offset,filelength>的格式记录所有堆的索引列表,其中PileID表示堆ID,filename表示文件名,offset表示偏移量,filelength表示文件大小。
7.一种SequenceFile存储优化装置,其特征在于,所述装置包括:
小文件过滤模块,用于基于预设标准从上传到HDFS中的每个文件过滤出待合并的小文件;
小文件分配模块,用于基于小文件分配算法将待合并的小文件分配到待合并队列全集中的待合并队列中;
堆创建模块,用于遍历待合并队列全集中的待合并队列,创建相应的堆以及堆全集并为每个堆初始化一个文件列表和一个索引列表;
索引创建模块,用于遍历待合并队列全集中的待合并队列,为每个待合并的小文件创建单个文件索引;
堆存储模块,用于将待合并队列中的小文件存储在相应的堆的文件列表中,同时将每个堆中所有小文件的文件索引存放于相应的索引列表中;
小文件合并模块,用于遍历堆全集中的堆,基于压缩策略将每个堆中的小文件合并为一个SequenceFile文件;
索引合并模块,用于创建一个全局索引文件,使用追加写操作将每个堆对应的索引列表中的内容写入全局索引文件;
上传模块,用于将所有的SequenceFile文件和全局索引文件上传至HDFS完成优化。
8.一种SequenceFile存储优化设备,其特征在于,包括处理器及存储介质;
所述存储介质用于存储指令;
所述处理器用于根据所述指令进行操作以执行根据权利要求1-6任一项所述方法的步骤。
9.计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110699134.7A CN113590566B (zh) | 2021-06-23 | 2021-06-23 | 基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110699134.7A CN113590566B (zh) | 2021-06-23 | 2021-06-23 | 基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590566A CN113590566A (zh) | 2021-11-02 |
CN113590566B true CN113590566B (zh) | 2023-10-27 |
Family
ID=78244408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110699134.7A Active CN113590566B (zh) | 2021-06-23 | 2021-06-23 | 基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590566B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114218171A (zh) * | 2021-12-22 | 2022-03-22 | 武汉斗鱼鱼乐网络科技有限公司 | 一种便利的存储方法、电子设备、存储介质及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7007015B1 (en) * | 2002-05-01 | 2006-02-28 | Microsoft Corporation | Prioritized merging for full-text index on relational store |
CN102332029A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量可归类小文件关联存储方法 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
CN107045531A (zh) * | 2017-01-20 | 2017-08-15 | 郑州云海信息技术有限公司 | 一种优化hdfs小文件存取的系统及方法 |
CN108121807A (zh) * | 2017-12-26 | 2018-06-05 | 云南大学 | Hadoop环境下多维索引结构OBF-Index的实现方法 |
CN110188080A (zh) * | 2019-05-17 | 2019-08-30 | 北京航空航天大学 | 基于客户端高效缓存的远程文件数据访问性能优化方法 |
JP2019204474A (ja) * | 2018-05-22 | 2019-11-28 | 広東技術師範学院 | ユーザアクセスプリファレンスモデルを用いたストレージ方法 |
CN110515920A (zh) * | 2019-08-30 | 2019-11-29 | 北京浪潮数据技术有限公司 | 一种基于Hadoop的海量小文件存取方法和系统 |
-
2021
- 2021-06-23 CN CN202110699134.7A patent/CN113590566B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7007015B1 (en) * | 2002-05-01 | 2006-02-28 | Microsoft Corporation | Prioritized merging for full-text index on relational store |
CN102332029A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量可归类小文件关联存储方法 |
CN103577123A (zh) * | 2013-11-12 | 2014-02-12 | 河海大学 | 一种基于hdfs的小文件优化存储方法 |
CN107045531A (zh) * | 2017-01-20 | 2017-08-15 | 郑州云海信息技术有限公司 | 一种优化hdfs小文件存取的系统及方法 |
CN108121807A (zh) * | 2017-12-26 | 2018-06-05 | 云南大学 | Hadoop环境下多维索引结构OBF-Index的实现方法 |
JP2019204474A (ja) * | 2018-05-22 | 2019-11-28 | 広東技術師範学院 | ユーザアクセスプリファレンスモデルを用いたストレージ方法 |
CN110188080A (zh) * | 2019-05-17 | 2019-08-30 | 北京航空航天大学 | 基于客户端高效缓存的远程文件数据访问性能优化方法 |
CN110515920A (zh) * | 2019-08-30 | 2019-11-29 | 北京浪潮数据技术有限公司 | 一种基于Hadoop的海量小文件存取方法和系统 |
Non-Patent Citations (1)
Title |
---|
海量样本数据集中小文件的存取优化研究;马振;哈力旦・阿布都热依木;李希彤;;计算机工程与应用(第22期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113590566A (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10289315B2 (en) | Managing I/O operations of large data objects in a cache memory device by dividing into chunks | |
US8176233B1 (en) | Using non-volatile memory resources to enable a virtual buffer pool for a database application | |
US20100211616A1 (en) | Performance by Avoiding Disk I/O for Deduplicated File Blocks | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
JP6598996B2 (ja) | データ準備のためのシグニチャベースのキャッシュ最適化 | |
US10997153B2 (en) | Transaction encoding and transaction persistence according to type of persistent storage | |
JP2005267600A5 (zh) | ||
CN106570113B (zh) | 一种海量矢量切片数据云存储方法及系统 | |
EP3494493B1 (en) | Repartitioning data in a distributed computing system | |
US11625187B2 (en) | Method and system for intercepting a discarded page for a memory swap | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
CN104965835B (zh) | 一种分布式文件系统的文件读写方法及装置 | |
US10515055B2 (en) | Mapping logical identifiers using multiple identifier spaces | |
CN113590566B (zh) | 基于堆结构的SequenceFile存储优化方法、装置、设备及存储介质 | |
McCoy et al. | High-performance filters for gpus | |
CN113253932B (zh) | 一种分布式存储系统的读写控制方法和系统 | |
US7502778B2 (en) | Apparatus, system, and method for efficient adaptive parallel data clustering for loading data into a table | |
CN101783814A (zh) | 海量存储系统的元数据存储方法 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
US11487731B2 (en) | Read iterator for pre-fetching nodes of a B-tree into memory | |
Wu et al. | Sequencefile storage optimization method based on pile structure | |
KR101341995B1 (ko) | 공유 데이터 저장소 관리 장치 및 방법 | |
US20240086362A1 (en) | Key-value store and file system | |
US20220335030A1 (en) | Cache optimization for data preparation | |
CN118035258A (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 |