- 相关推荐
基于Hadoop分布式文件系统的单点问题的研究论文
1 引言
如今网络的飞速发展,数据量的增多,这就要求数据库能够具有处理超大规模数据的能力。Hadoop分布式平台的出现,很好地解决了处理海量数据的难题。Hadoop集群架构有两个核心的设计,分别是HDFS(Hadoop Distributed FileSystem)和MapReduce。由于HDFS只有一个元数据服务器NameNode,导致HDFS存在单点故障,单点内存不足等问题。本文在分析研究HDFS单点问题的基础上,针对单点内存瓶颈问题,提出了一种新型的上层归档文件系统,用来优化海量小文件的处理,可有效地解决单点内存瓶颈问题。
2 HDFS架构
Hadoop分布式文件系统(HDFS)是Hadoop分布式平台的一个核心组件,其设计目的是为了解决超大文件存储难题。HDFS是由一个主节点和多个子节点构成的主从结构。主节点被称为名称节点(NameNode),子节点被称为数据节点(DataNode)。
名称节点主要负责管理分布式文件系统中的元数据信息,处理用户文件访问操作请求等。而被上传到Hadoop分布式文件系统中的大数据则保存在数据节点中。通过心跳机制,每隔一段时间数据节点与名称节点进行信息交互。
Hadoop分布式文件系统包含名称节点、数据节点、数据块、数据包等组件。
名称节点(NameNode)是HDFS的主节点,负责管理并维护整个分布式文件系统的元数据信息,即:FSImage信息和EditLog信息。NameNode又决定了大数据文件与数据块之间的映射,数据块与数据节点之间的映射,处理客户端发来的文件操作访问请求。
数据节点(DataNode)主要负责存储数据文件,并且每隔一段时间向主节点发送存储数据映射列表。
数据块(Data Block)。分布式文件系统存储的数据都存储在数据块中。上传的数据文件首先被分割成默认大小64MB的数据块,然后文件以数据块的形式存放在不同的DataNode节点上,是分布式文件系统存储数据的基本单位。为了防止数据块丢失,每块默认复制三块,其中两个数据块存储在一个机架中,另一个数据块则被存储在其他的机架中,大大提高了HDFS数据的可用性。
数据包(Data Packet)。在执行写操作时,需要将上传的数据先保存在本地目录中,待累计到系统规定值后才将数据一次写入到Hadoop分布式文件系统中。这样,每次上传的数据称为一个数据包。
3 NameNode单点问题分析
3.1 单点故障
单点故障是指引起系统整体失效的部件,当该部件失效时,会造成整个系统无法工作。Hadoop分布式文件系统由一个主节点和多个子节点构成的。NameNode节点负责管理和维护所有的命名空间和元数据信息,名称节点主要负责管理分布式文件系统中的元数据信息,处理用户文件访问操作请求等。一旦发生主节点故障会使整个系统无法正常工作,这对于使用者来说是灾难性的。
3.2 性能瓶颈
NameNode节点主要负责管理并维护整个分布式文件系统的元数据信息,处理用户文件访问操作请求。每次用户发出文件访问操作请求时,NameNode节点都需要响应客户端的请求。由于HDFS仅有一个名称节点,当大量客户端同时发出文件访问操作请求,单一的名称节点无法及时一一做出响应,这必然会对HDFS正常运行造成严重的影响,是HDFS的性能瓶颈。
3.3 内存瓶颈
NameNode节点中保存了整个系统的命名空间,负责管理并维护整个分布式文件系统的元数据信息,即:FSImage信息和EditLog信息。对于每个上传的文件,NameNode节点会为其自动生成相应的元数据信息,而这些元数据信息会占用少许的主节点内存空间。HDFS适合存储大数据文件,一般情况下,NameNode节点存储的元数据信息不会对整个Hadoop集群造成影响。上传文件后,用户更多的是与数据节点进行访问交互,不会对访问性能造成影响。然而用户选择上传海量的小文件时,元数据节点需要为每个小文件生成对应的元数据信息,这势必对NameNode单点内存性能造成影响,从而对整个Hadoop集群的扩展性造成影响。一般,当用户上传小文件数量达到一亿,相应的元数据信息约占主节点20G的存储空间。若上传的小文件以指数级增长,HDFS集群将不足以支持海量文件的存储。同样,NameNode内存瓶颈严重制约了集群的扩展。
4 对小文件存储优化的实现
上传小文件前,首先对海量小文件进行预处理,将本地目录中需要处理的小文件写入HashMap集合中,同时通过格式转换生成文件流式集合,其中小文件文件名作为key,文件内容作为value。然后以SequenceFile作为容器,再将HashMap中存储的海量小文件进行归档合并成一个大文件。最后,将合并后的大文件上传Hadoop服务器序列化存储在HDFS中,从而缓解了NameNode节点内存瓶颈问题。
SmallFilesWrite类中,成员变量有两个,就是String类型的静态成员变量SOURCE_PATH和TARGET_PATH,SOURCE_PATH变量表示源路径,即预上传文件本地目录路径。TARGET_PATH表示目标路径,即上传到指定Hadoop分布式文件系统路径。成员方法主要有readFiles方法、file2Bytes方法和main方法。
5 结论
本文针对Hadoop分布式文件系统的单点内存瓶颈问题,提出了采用小文件归并的优化算法。根据Hadoop存储数据特点,利用小文件合并大文件,可有效减少元数据的生成,解决了单点内存瓶颈问题。在Hadoop分布式文件系统单点内存瓶颈优化的基础上,对Hadoop分布式文件系统的性能瓶颈的优化将是本人未来主要研究的内容。
【基于Hadoop分布式文件系统的单点问题的研究论文】相关文章:
基于问题导引的探究式教学研究论文08-03
电压跌落问题的研究论文05-05
浅谈急诊急救的问题的研究论文04-27
成本核算的问题研究论文05-01
企业债务重组问题的研究论文06-05
基于单片机监控系统的研究毕业论文06-14