基于Hadoop的小文件存储的研究

(整期优先)网络出版时间:2023-01-07
/ 3

基于Hadoop的小文件存储的研究

尹铁源 ,张超凯

沈阳工业大学  信息科学与工程学院  辽宁沈阳  110870

摘要:随着信息化的发展,各行业需要处理的数据呈爆炸式增长。Hadoop分布式存储框架对较大文件提供了可靠高效的存储服务,但在处理海量小文件时效率显著降低。因此,本文提出了基于Hadoop的小文件存储优化的研究,通过Apriori算法挖掘出各小文件之间的关联性,将具有关联性的小文件进行合并装箱降低NameNode内存开销来提高文件的存储效率。实验结果表明,该方法提高了Hadoop文件系统存储小文件的存储效率。

关键词:小文件;Hadoop;Apriori算法

Research on small file storage based on Hadoop

YIN Tie-yuan, ZHANG Chao-kai

(School of Information Science and Engineering, Shenyang University of Technology, Shenyang 110870, China)

Abstract: With the development of informatization, the data that need to be processed in various industries is growing explosively. Hadoop distributed storage framework provides reliable and efficient storage services for large files, but the efficiency is significantly reduced when dealing with massive small files. Therefore, this paper puts forward the research of small file storage optimization based on Hadoop, mining the correlation between small files through Apriori algorithm, merging and boxing the small files with correlation, and reducing the memory overhead of namenode to improve the storage efficiency of files. Experimental results show that this method improves the storage efficiency of Hadoop file system for storing small files.

Key words: Small files; Hadoop; Apriori algorithm


1 引言

1.1 研究背景与意义

随着信息技术的不断发展,各领域产生的数据急剧增长,也随之产生了大量的小文件。这些大规模的数据将给数据的存储带来一定的压力和挑战。HDFS存储小文件DataNode会将整个块空间分配给小文件,会导DataNode存储空间严重浪费,NameNode内存急剧消耗。因此,如何高效地存储和处理大量的小文件成为一个研究热点[1]

Hadoop分布式存储框架为小文件的存储提供了新的方法,并且结合Apriori算法,把关联的小文件合并后装箱,进一步提升了对海量小文件的存储效率[2]

1.2 国内外研究现状

HDFS的设计初衷是存储超大文件的,由于HDFS存储小文件效率不高等问题,所以设计开发了多种解决方案[3]。这些解决方案可以分为两种,一种根据HDFS特殊的应用场景将海量小文件装箱成大文件,另一种通过增加NameNode资源、降低NameNode负载解决小文件存储问题,这些解决方案都有各自的优缺点。目前,学术界尚未提出海量、无规律、无结构、无组织小文件存储效率问题的解决方案。

2Hadoop架介绍

Hadoop[4]是一个分布式的存储框架,它可以对数据进行分片的处理,即将海量的数据分配到不同的节点中进行各自的处理从而提升计算效率[5]。Hadoop框架的核心是:HDFS和MapReduce,还包括数据库和ZooKeeper。HDFS为大量的数据提供了存储,Map Reduce为大量的数据提供了并行计算。Hadoop还具有可扩展性、低成本性、高效性以及可靠性的特点。Hadoop架构图如图1所示[6]

图1

2.1HDFS

HDFS是分布式计算中数据存储管理的基础,能够实现很高的数据吞吐量,适合有大量数据的数据集的应用程序[7]。HDFS适用于大数据时代的海量数据处理。

在HDFS中,采用master/slave架构模式对数据进行存储,HDFS集群主要由一个NameNode和一定数量的DataNode组成。NameNode属于主控(master)节点,负责分配和记录存储位置,DataNode属于从属(Slave)节点,负责实际存储数据。

3Apriori算法优化

3.1 Apriori算法

Apriori算法通过置信度(confidence)度量事务之间联系的紧密度,通过支持度(support)度量已挖掘关联关系的有用性。

置信度计算公式如下:

Confidence (𝐴⇒𝐵)=

支持度计算公式如下:

Support (𝐴⇒𝐵)=𝑃(𝐴⋃𝐵)

3.2 Apriori算法的优化

由于HDFS文件访问频繁,大量候选集中间结果需要保存,大量的模式匹配将严重影响HDFS Client性能。如果不对Apriori算法进行优化,提高Apriori算法效率[8],那么利用Apriori算法分析文件关联关系将不具备可行性。

3.2.1 频繁模式树和散列技术

为解决上述问题,本文通过频繁模式树和散列技术来提高Apriori算法效率。

频繁模式树,Apriori算法的一种优化数据结构,也称为FP树。利用FP树可以在构造频繁集过程中不产生候选集,减少模式匹配次数。在Apriori算法中利用FP构造频繁集的方法称为FP增长,FP增长的设计基于分治策略:将Apriori算法产生的中间结果保存在FP树中。将FP树构建完整后,就容易挖掘文件之间的关联关系。

通过散列技术[9]存储关联关系,将关联关系水平划分并映射到不同桶中并对桶内的关系计数,桶内计数用于验证该关系是否符合支持度阈值与置信度阈值。这种方法以较高的压缩比将关联关系压缩到散列表中,节省了管理开销。将已挖掘关联关系结果映射到散列表,会大幅节省后续小文件装箱算法时对小文件之间的关联关系查找开销,提高小文件装箱算法效率。

3.2.2小文件装箱

采用触发文件的小文件装箱方法,即以触发文件为基准,文件关联关系配合触发文件。触发文件是用户经常访问的小文件,其访问频率超过预期设置的访问频率阈值。在利用Apriori算法挖掘出文件之间的关联关系,并基于触发文件将触发文件和与其关联小文件装箱后,将装箱文件尺寸大小符合大文件标准的装箱文件直接存储。为解决装箱文件尺寸大小不符合大文件标准的装箱文件,引入二次合并装箱。

3.3二次合并

以HDFS数据块尺寸为基准,将装箱文件合并为尺寸小于数据块尺寸的大文件。该解决方案将装箱文件视为小文件,首先装箱文件基于文件尺寸均匀分布[10],然后基于数据块尺寸合并装箱文件。装箱文件合并要使用到2种数据结构:装箱文件缓存池和装箱文件合并队列。

装箱文件合并步骤如下:

(1)根据配置参数创建装箱文件缓存池和装箱文件合并队列,并为每个装箱文件合并队列建立装箱文件合并线程。

(2)分析文件访问日志并基于Apriori算法将具有关联关系的小文件装箱成装箱文件。

(3)将(2)产生的装箱文件基于均匀分布加入到装箱文件缓存池中。开启装箱文件合并线程。

(4)将装箱文件缓存池依次基于装箱文件合并线程id散列到装箱文件合并线程中,若该线程已阻塞,则唤醒该线程。验证装箱文件合并队列尺寸是否等于数据块尺寸或者装箱文件是否跨越数据块。若装箱文件合并队列尺寸等于数据块尺寸或者装箱文件跨越数据块,则将已合并文件存储到HDFS后继续合并装箱文件,否则直接合并装箱文件。

(5)若装箱文件缓存池中暂时无待合并装箱文件则阻塞装箱文件合并线程。

4实验与分析

4.1实验环境

实验中数据块尺寸与数据块副本数均取系统默认值,实验在Hadoop框架上进行,其中Hadoop框架上有一个NameNode,3个DataNode每个节点的操作系统都是CentOS7,Hadoop版本3.3.2,Idea版本2020.2.3,各节点配置如图2。

图2

4.2实验结果对照

本实验分别将不同数量的小文件正常存入HDFS和基于Apriori算法分析小文件之间关联关系将这些小文件装箱并基于均匀分布将装箱文件合并为大文件后存入HDFS进行测试,记录每次实验NameNode内存开销。实验结果如图3所示。

图3

由图可知,随着小文件数量的增加,小文件合并成大文件后存入HDFS,NameNode无需再为小文件保存元数据,所以NameNode因存储小文件造成的内存开销,并趋于平缓,每个小文件NameNode内存使用量维持在0.021MB左右。

5 结论

本文通过提高Apriori算法效率进行关联文件装箱并基于均匀分布合并装箱文件大幅降低了NameNode因存储小文件造成的内存开销,提高了NameNode存储空间利用率。进一步提高了Hadoop文件系统存储小文件的存储效率。

参考文献

[1]MACKEY G, SEHRISH S, WANG J. Improving metadata management for small files in HDFS[C]// Cluster Computing and Workshops, 2015.

[2]张海.基于HDFS分布式存储技术研究与优化[D].河北工业大学,2013.

[3]李三孫,李龙澍.Hadoop中处理小文件的四种方法的性能分析[J].计算机工程与应用,2019,52(9):4449.

[4]Tom White. Hadoop权威指南[M].2 版.曾大聃,周傲英,译.北京:清华大学出版社,2011:260-262.

[5]伍午阳.基于大规模网络语料的中文新词发现技术研究[J].2017

[6]任敬佩.基于Hadoop开源云计算平台的聚类分析研究[D].内蒙古科技大学,2015.

[7]Apache. Hadoop distributed file system [EB/OL]. [2010-09-24].

[8]陈志飞,冯钧.一种基于Apriori算法的优化挖掘算法[J].计算机与现代化,2016(9):1-5.

[9]Roy P S. Shell Hash Dating and Mixing Models for Palimpsest Marine Sediments [J]. Radiocarbon,2016,33 (3):283-289.

[10]Avigad,Jeremy.Uniform distribution and algorithmic randomness[J].Journal of Symbolic L0gic,2012,78(1):334-344.