一种适用于流式大数据系统测试的数据生成方法

来源 :计算技术与自动化 | 被引量 : 0次 | 上传用户:gzhguozhihong
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Hadoop分布式文件系统( HDFS) 在大数据存储中具有优良的性能,适用于处理和存储大文件,但在海量小文件处理时性能显著下降,过多的小文件使得整个系统内存消耗过大。为了提高HDFS处理小文件的效率,改进了HDFS的存储方案,提出了海量小文件的存储优化方案。根据小文件之间的相关性进行分类,然后将同一类小文件合并上传,并生成索引文件,读取时采用客户端缓存机制以提高访问效率。实验结果表明,该方案在数据迅速增长的情况下能有效提高小文件访问效率,降低系统内存开销,提高HDFS处理海量小文件的性能。
  关键词:Hadoop;HDFS;小文件;缓存;
  中图分类号:TP391文献标识码:A
  Abstract:The Hadoop distributed file system (HDFS) has excellent performance in the big data storage and is suitable for processing and storing big files,but when processing the mass small files the performance reduced significantly,too many small files consume excessive amount of memory.In order to improve the efficiency of processing small files in HDFS,this paper improved the HDFS storage solution,and proposed an optimization scheme.First,it Classified the small files according to the correlation,a set of correlated files is combined into a large file then stored in HDFS,and generate the index file,using clientside caching mechanism to improve the efficiency of access.The experimental results show that the proposed scheme can improve the store and access efficiency effectively with rapiding growth of small files,and reduce memory consumption,improve the performance of processing mass small files.
  Key words:Hadoop;HDFS;small file;cache
  1引言
  随着信息技术的飞速发展,人类社会所产生的信息数据呈现出了爆炸式的增长速度,web应用网站每天产生的数据达到TB级,使得日志文件、图片、用户文件等各类小文件(一般是MB级别甚至是 KB 级别的)呈几何级增长,这些小文件的实时存取给传统的文件储存框架带来了前所未有的挑战。
  HDFS(hadoop distributed file system)作为Hadoop的关键技术之一,是一个具有高容错性、成本低廉性等特点的分布式文件系统。HDFS文件系统构建在普通PC机组成的集群上,采用流式读取方式,适用于超大文件(几百MB,GB,甚至TB的文件)的存储,由一个Name Node和若干个Data Node组成,其中文件存储是以块为单位,客户端数据将被划分成若干块并分散存储在集群的DataNode节点中。根据小文件自身的特点,如果将小文件直接存于HDFS,会快速消耗NameNode的存储空间,而流式读取的方式则大大降低了读取性能,造成瓶颈问题,严重影响HDFS的性能。
  针对上述 HDFS小文件处理存在的问题,为提高 HDFS 在处理小文件上的存储访问效率,本文提出了一种基于 HDFS 的小文件存储优化方案。首先根据小文件的类别及相关性对大量的小文件进行归类分析,将同一类文件合并为一个大文件并存储在一个块中,这就保证了块内文件的关联性,并建立索引机制提高块内文件的检索速度,在读取文件的过程中引入缓存策略来减少小文件与数据节点之间的访问时间,从而提高系统读取时间。
  2相关研究
  针对HDFS在处理大量小文件的缺点与不足,Hadoop自身提供了HAR(Hadoop Archive),Sequence file和MapFile[1-3]几个解决方案,但是这三种方案都没能解决分布式存储系统与小文件读取之间的矛盾问题。针对小文件存储的问题,国内外许多学者进行了相关研究,提出了大量的解决方案。目前解决方案的核心都是将小文件合并为大文件,通过减少文件个数以减少元数据大小,同时为小文件建立索引以提高访问效率。
  文献[4]使用HAR实现了小文件的合并,从而提高了HDFS中元数据的存储效率。
  文献[5]基于BlueSky中国教育共享系统,通过将小文件归并成一个大文件來减轻namenode的压力,提高小文件的存储效率,并采取两级预取机制以提高小文件的读取效率。
  针对大型分布式存储系统,文献[6]提出了一种通过服务器驱动的元数据预取和命名空间平坦化的元数据管理方法。
  文献[7]针对Web GIS 系统的数据特点,开发HDWeb GIS原型系统,通过将相邻地理位置信息小文件合并成大文件并建立哈希索引的方法来优化小文件的I/O 性能。
  文献[8]提出基于FatBtree的数据访问方法,解决小文件访问造成的内存消耗太大的问题。   文献[9]提出的EHDFS系统在合并用户定义的相关小文件的同时在每个块的开头记录其偏移量和长度信息,并根据namenode中的文件映射定位想要查询的小文件,提高访问效率。
  文献[10]提出了基于HDFS的海量教育资源中小文件的存储优化方案,利用教育资源中小文件之间的关联关系将小文件合并成大文件,并用索引機制访问小文件及元数据缓存和关联小文件预取机制来提高文件的存储和读取效率。
  文献[11] 采用序列文件技术将小文件以队列的形式合并为大文件,在合并时利用多维属性决策理论综合读文件时间、合并文件时间及节省内存空间大小等指标得出最优合并方式,从而提高了小文件的存储效率。
  3存储优化方案
  31存储体系结构
  根据小文件自身的特点,直接将小文件存储于HDFS会降低其存储性能,为了优化小文件的存储,本文改进了HDFS的存储结构,在原 HDFS 架构之外,加入了一个独立的小文件处理模块,用以实现小文件的分类处理及小文件的合并操作,创建相应的索引机制。当用户操作文件时,需要根据文件大小判断该文件是否属于小文件,如果不是小文件则直接存储,否则交给小文件处理模块处理。HDFS文件块的小大判断,当小于64M的文件本文都定义为小文件。
  改进后的数据存储系统结构如图1所示,包括三大模块:用户模块、处理模块及数据存储模块。其中,处理模块是核心模块,用于实现小文件的文件分类及预处理及小文件的合并操作。
  32文件合并策略
  文件合并的本质就是根据给定的合并策略将许多小文件转换为一个大文件再存储到数据节点中,这样可以大大减少的内存消耗,从而解决海量小文件存储时内存消耗过度的问题。考虑到文件之间的关联性,在小文件合并成大文件前,小文件进行分类归档处理,然后将处理后的同一类文件进行合并。本文研究的小文件主要针对文本文档,例如PDF格式文档,CAJ、txt文档等。首先,根据文档格式,进行第一次分类。对于第一次归类后的文本文档,采用改进KNN分类方法对其进行分类关联,然后将分类后的小文件根据合并算法进行合并,并写入文件系统的数据节点中,同时将包括合并后的大文件的名字、副本、位置等信息的索引文件写入名称节点。
  采用KNN算法,将小文件转换为相应的文本特征向量值,然后根据式(1)计算各个训练集文档和测试集文档的向量表示。
  式(2)中,θ越小则说明向量越相似,因此当两个向量的夹角余弦值小于给定的阈值时,则认为两个文档属于同一类并存在相应的关联。
  利用KNN算法将小文件的文本内容进行特征提取、赋予特征权重后,生成相应的文本向量模型,式(2)计算小文件之间的相似度,通过该相似度对小文件进行分类,将待判文本划分到与其相似度最大的那一类中,并根据设置的阈值比较小文件之间的关联生成相关文件。
  小文件的合并操作是在处理模块中的合并单元完成的,合并基于是按照小文件的类别进行的,同一类别的小文件被合并成一个序列化大文件,为避免跨块保存,要求合并后的文件不能超过块的大小。
  33索引策略
  小文件的合并大量减少了文件个数,文件的索引结构则可以实现在大文件中快速读取小文件。小文件按照分类结果依次以追加的方式合并成大文件,合并过程中每个合并的文件会生成一个索引文件,主要记录小文件本身的文件ID,文件名,文件偏移量和文件长度。当合并完成后,会在索引文件末尾增加一条记录,记录小文件与合并文件的映射关系。其索引结构如图2所示。
  34客户端缓存机制
  当小文件频繁与系统交互会影响查询速度,因此在读取文件时,采用客户端缓存机制提高系统访问效率。当客户端第一次请求读取文件时,需要根据名字节点查找文件在数据节点上的存储信息,因此系统可以将索引文件中相对应的索引位置信息和相应的数据文件保存至客户端缓存中,如果该索引文件中的其他小文件被请求时,则可以直接从缓存中读取文件,从而减少与元数据结点交互,同时也不需要频繁查找数据节点,只有当缓存中出现更新变化时才需要进行,因此提高小文件的读取效率。
  4文件读写过程
  41小文件写入
  小文件经过合并之后,将合并的文件块放入到待写入HDFS文件队列,使用HDFS的写入流程将合并之后的文件块写入到HDFS当中去。具体的写入过程如图3所示:
  42小文件读取
  小文件合并存储在HDFS中,合并文件以数据块的形式存放在数据节点上,相比合并前,小文件更加集中的分布在DataNode上。当访问这些小文件时,则可以避免访问时在不同DataNode之间的跳跃,且采取缓存机制可以提高访问效率,加快读取速度。
  小文件读取流程如图4所示:
  5实验与分析
  为了验证本文提出的小文件的存储优化方案的可行性与有效性,本文从小文件合并写入时间、内存开销和查询性能三个方面在Hadoop平台上对小文件存储系统和HAR归档技术、原始HDFS进行了对比实验。
  本实验环境为:4 台 HDFS 集群主机,操作系统为 RHEL 6.2,内存为8GB,其中1 台为 NameNode 节点, 3 台为 DataNode节点;客户端使用普通 PC,2 核 3.4 GHz,4GB内存。实验中所有机器均属于同一百兆局域网,HDFS版本为2.7.0。
  本测试选取大量不同类型的小文件进行测试,包括海量的jpg文件、txt文件、dat文件、pdf文件、rar文件和各类office文件,如doc文件、excel文件、ppt文件,数量约为20000个。为了测试各种处理方案对多类型数据文件的有效性,从测试数据集中分别取1000、2000、10000、20000个不同类型数据组合成四组不同大小的数据集,每组进行10次实验,取十次实验的平均值作为实验结果。   (1)小文件合并写入时间对比
  针对四组给定数据,分别统计各系统的文件上传时间,记录它们的平均耗时,测试结果如图5所示。
  从图5可以看出,对于原始的HDFS系统,将小文件写入HDFS之前无需做任何处理,只需要向NameNode发送请求查找合适的数据节点直接写入,随着写入文件数量的增加,交互次数逐渐增大,原始HDFS并没有太大优势。本文方案在写入一个小文件时需要合并小文件并建立合并文件的索引,因此需要一定的时间,但是其增长的速度相对缓慢,而HAR 技术将小文件合并为一个HAR文件直接写入则花费的时间较短。
  (2)节点内存消耗测试
  为了分析不同数量的文件对NameNode内存的消耗情况,将四组实验数据的小文件分别上传到各文件系统上,对比本文小文件处理方案、HAR归档技术以及未采取合并策略的原始方式HDFS三种方式,每次启动NameNode后,记录随机读取文件时NameNode的内存使用情况。测试对比结果如图 6所示。
  从图6可以看出,当文件数量较少时,各存储方案名字节点内存使用情况相差不大,随着小文件数量的增加,三种方案名字节点内存的使用都在增加。相比而言,原始HDFS对小文件不做任何处理,每个小文件均在内存中占据一个对象的空间,因此随着小文件数量增加内存消耗急剧增长,本文方案和HAR存储的是合并之后的大文件,因此名称节点需要管理的元数据量会大大减少,内存的占用率就会相应减小,同时,由于本文档案对合并后的小文件存储采用了混合索引策略,因此在随机读取文件时性能较好,与HAR相比更进一步减少了名称节点内存的占用量。
  (3)小文件读取性能测试
  小文件读取性能测试主要是对比三种方案在读取小文件时的性能表现,从而验证本文的小文件处理方案在小文件访问性能方面的改善情况。测试釆用记录每个文件的访问时间指标来描述小文件访问性能,实验结果如图7所示。
  图7表明了三种方案随机读取的性能对比,从图中可以看出原始HDFS与HAR在小文件数目增多时,性能下降比较明显,而本文提出的方案在读取速度上明显优于其他两种方案。原始HDFS在访问小文件时需要先查找名称节点读取元数据信息,然后在数据节点读取相关数据,这就增大了文件的读取时间。而HAR在存储时将多个小文件打包成一个HAR文件,但是在文件的读取上,由于没有考虑文件的相关性,当连续读取的小文件具有关联性时,则极大地影响了数据的读取速度。本文方案中在文件合并时考虑到文件之间的相关性,关联文件存储在相邻的位置上,同时在存储小文件时加入了索引机制方便文件的查找,同时客户端的缓存机制保证小文件读取时性能略有提升。
  6结束语
  针对HDFS存储系统中小文件存储效率低下的问题,本文提出了一种基于HDFS的小文件优化存储方案。在该方案中,采用KNN算法将小文件进行分类合并成大文件从而节省了名称节点所占的内存空间,同时生成索引文件存储到HDFS上,在文件读取时,采用客户端的缓存机制提高了检索的速度。通过对比实验,结果表明相对于原始的HDFS系统,该存储方案的访问速率提高了20%,同时有效的降低了NameNode和DataNode的内存开销,解决了HDFS上的小文件存储问题。在下一步的工作中,将进一步改善小文件的合并策略以及小文件的读取操作,从而提高小文件的读取效率。
  参考文献
  [1]Sequence file wiki[EB/OL].http://wiki.apache.org/hadoop/SequenceFile,2014.
  [2]Hadooparchives[EB/OL].http://hadoop.apache.org/docs/r2.5.2/hadoopmapreduceclient/hadoopmapreduceclientcore/HadoopArchives.html,2014
  [3]Map files[OL].http://hadoop.apache.org/common/docs/current/api/ org/apache/hadoop/io/MapFile.html.
  [4]MACKEY G,SEHRI S,WANG Jun.Improving metadata management for small files in HDFS[C/OL]//Proceedings of 2009 IEEE International Conference on Cluster Computing and Workshops.[2010 08 10].http:// ieeexplore.ieee.org/stamp/stamp.jsp?tp=
其他文献
运用Orlicz空间和Lebesgue—Bochner空间理论及技巧,刻画赋Luxemburg范数的Orliez—Boehrter函数空间的球面特征,得到球面上的点为局部一致凸点的充分性条件和空间具有局部一致
摘要:网络配置数据的存储与恢复广泛应用于各网络设备。本文旨在研究一种可实时安全存储网络配置数据的方法。CSS (Configuration Safe Store)通过截获MIB (Management Information Base)消息,将MIB请求的备份按照下发的顺序存储进文件中,在设备发生故障或者正常重启之后从文件中回读配置数据并将系统恢复至文件所存储的配置。CSS的配置备份和配置回滚等功
保时捷汽车公司于日前发布保时捷911 GT3 RS新车,并为所有该款跑车配备米其林Pilot Sport Cup 2超高性能轮胎,前后轮规格分别为265/35 ZR20和325/30 ZR21。米其林Pilot Sport Cup 2轮胎是最新一代适用于公路和赛道的轮胎,专为超高性能车辆量身打造。保时捷公司对米其林Pilot Sport Cup 2所发挥的性能信心十足,与此同时,这款轮胎也是新近上