预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于Hadoop分布式文件系统的单点问题的研究论文1引言如今网络的飞速发展,数据量的增多,这就要求数据库能够具有处理超大规模数据的能力。Hadoop分布式平台的出现,很好地解决了处理海量数据的难题。Hadoop集群架构有两个核心的设计,分别是HDFS(HadoopDistributedFileSystem)和MapReduce。由于HDFS只有一个元数据服务器NameNode,导致HDFS存在单点故障,单点内存不足等问题。本文在分析研究HDFS单点问题的基础上,针对单点内存瓶颈问题,提出了一种新型的上层归档文件系统,用来优化海量小文件的处理,可有效地解决单点内存瓶颈问题。2HDFS架构Hadoop分布式文件系统(HDFS)是Hadoop分布式平台的一个核心组件,其设计目的是为了解决超大文件存储难题。HDFS是由一个主节点和多个子节点构成的主从结构。主节点被称为名称节点(NameNode),子节点被称为数据节点(DataNode)。名称节点主要负责管理分布式文件系统中的元数据信息,处理用户文件访问操作请求等。而被上传到Hadoop分布式文件系统中的大数据则保存在数据节点中。通过心跳机制,每隔一段时间数据节点与名称节点进行信息交互。Hadoop分布式文件系统包含名称节点、数据节点、数据块、数据包等组件。名称节点(NameNode)是HDFS的主节点,负责管理并维护整个分布式文件系统的元数据信息,即:FSImage信息和EditLog信息。NameNode又决定了大数据文件与数据块之间的映射,数据块与数据节点之间的映射,处理客户端发来的文件操作访问请求。数据节点(DataNode)主要负责存储数据文件,并且每隔一段时间向主节点发送存储数据映射列表。数据块(DataBlock)。分布式文件系统存储的数据都存储在数据块中。上传的数据文件首先被分割成默认大小64MB的数据块,然后文件以数据块的形式存放在不同的DataNode节点上,是分布式文件系统存储数据的基本单位。为了防止数据块丢失,每块默认复制三块,其中两个数据块存储在一个机架中,另一个数据块则被存储在其他的机架中,大大提高了HDFS数据的可用性。数据包(DataPacket)。在执行写操作时,需要将上传的数据先保存在本地目录中,待累计到系统规定值后才将数据一次写入到Hadoop分布式文件系统中。这样,每次上传的数据称为一个数据包。3NameNode单点问题分析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节点内存瓶颈问题。Sm