网站首页  词典首页

请输入您要查询的论文:

 

标题 基于Hadoop分布式文件系统的单点问题的研究
范文

    宋继红,李梦楠,郝得智

    摘? 要:从Hadoop分布式文件系统的架构出发,对NameNode节点存在的单点问题进行了分析与研究。在这个前提下,针对单点内存瓶颈问题,提出了一个小文件归并算法。此算法以Hadoop为基础,利用Hadoop分布式文件系统的特点,将归并后生成的大文件序列化到Hadoop分布式文件系统,很好地解决了小文件过多时NameNode单点内存瓶颈问题,并提高了系统的性能和可靠性。

    关键词:Hadoop;小文件归并;分布式文件系统

    中图分类号:TP393.0?????????? 文献标识码:A

    1?? 引言(Introduction)

    如今网络的飞速发展,数据量的增多,这就要求数据库能够具有处理超大规模数据的能力。Hadoop分布式平台的出现,很好地解决了处理海量数据的难题。Hadoop集群架构有两个核心的设计,分别是HDFS(Hadoop Distributed File System)和MapReduce[1]。由于HDFS只有一个元数据服务器NameNode,导致HDFS存在单点故障,单点内存不足等问题。本文在分析研究HDFS单点问题的基础上,针对单点内存瓶颈问题,提出了一种新型的上层归档文件系统,用来优化海量小文件的处理,可有效地解决单点内存瓶颈问题。

    2?? HDFS架构(HDFS architecture)

    Hadoop分布式文件系统(HDFS)是Hadoop分布式平台的一个核心组件,其设计目的是为了解决超大文件存储难题[2]。HDFS是由一个主节点和多个子节点构成的主从结构。主节点被称为名称节点(NameNode),子节点被称为数据节点(DataNode)。HDFS的架构图如图1所示。

    图1 HDFS架构图

    Fig.1 The architecture diagram of HDFS

    名称节点主要负责管理分布式文件系统中的元数据信息,处理用户文件访问操作请求等。而被上传到Hadoop分布式文件系统中的大数据则保存在数据节点中。通过心跳机制,每隔一段时间数据节点与名称节点进行信息交互[3]。

    Hadoop分布式文件系统包含名称节点、数据节点、数据块、数据包等组件。

    名称节点(NameNode)是HDFS的主节点,负责管理并维护整个分布式文件系统的元数据信息,即:FSImage信息和EditLog信息[4]。NameNode又决定了大数据文件与数据块之间的映射,数据块与数据节点之间的映射,处理客户端发来的文件操作访问请求。

    数据节点(DataNode)主要负责存储数据文件,并且每隔一段时间向主节点发送存储数据映射列表。

    数据块(Data Block)。分布式文件系统存储的数据都存储在数据块中[5]。上传的数据文件首先被分割成默认大小64MB的数据块,然后文件以数据块的形式存放在不同的DataNode节点上,是分布式文件系统存储数据的基本单位。为了防止数据块丢失,每块默认复制三块,其中两个数据块存储在一个机架中,另一个数据块则被存储在其他的机架中,大大提高了HDFS数据的可用性。

    数据包(Data Packet)。在执行写操作时,需要将上传的数据先保存在本地目录中,待累计到系统规定值后才将数据一次写入到Hadoop分布式文件系统中。这样,每次上传的数据称为一个数据包。

    3?? NameNode单点问题分析(NameNode single

    point problem analysis)

    3.1?? 单点故障

    单点故障是指引起系统整体失效的部件,当该部件失效时,会造成整个系统无法工作。Hadoop分布式文件系统由一个主节点和多个子节点构成的。NameNode节点负责管理和维护所有的命名空间和元数据信息,名称节点主要负责管理分布式文件系统中的元数据信息,处理用户文件访问操作请求等。一旦发生主节点故障会使整个系统无法正常工作,这对于使用者来说是灾难性的。

    3.2?? 性能瓶颈

    NameNode节点主要负责管理并维护整个分布式文件系统的元数据信息,处理用户文件访问操作请求。每次用户发出文件访问操作请求时,NameNode节点都需要响应客户端的请求[6]。由于HDFS仅有一个名称节点,当大量客户端同时发出文件访问操作请求,单一的名称节点无法及时一一做出响应,这必然会对HDFS正常运行造成严重的影响,是HDFS的性能瓶颈。

    3.3?? 内存瓶颈

    NameNode节点中保存了整个系统的命名空间,负责管理并维护整个分布式文件系统的元数据信息,即:FSImage信息和EditLog信息。对于每个上传的文件,NameNode节点会为其自动生成相应的元数据信息,而这些元数据信息会占用少许的主节点内存空间[7]。HDFS适合存储大数据文件,一般情况下,NameNode节点存储的元数据信息不会对整个Hadoop集群造成影响。上传文件后,用户更多的是与数据节点进行访问交互,不会对访问性能造成影响。然而用户选择上传海量的小文件时,元数据节点需要为每个小文件生成对应的元数据信息,这势必对NameNode单点内存性能造成影响,从而对整个Hadoop集群的扩展性造成影响。一般,当用户上传小文件数量达到一亿,相应的元数据信息约占主节点20G的存储空间。若上传的小文件以指数级增长,HDFS集群将不足以支持海量文件的存储。同样,NameNode内存瓶颈严重制约了集群的扩展。

    目前,Hadoop0.18.0版本引入了HAR(Hadoop archives)技术,它可以将众多小文件打包成一个大文件进行存储,减少HDFS中小文件数量,主要解决的是小文件占用大量Namenode内存空间。但是它是一个人工干预的过程,同时既不能够支持自动删除原小文件,也不支持追加操作,当有新文件进来以后,需要重新打包。还有一些针对具体问题的小文件解决方案,如WebGIS提出适用于地理信息系统信息存储机制,和指定存储格式为PPT格式的解决方案。这些解决方案可以有效解决HDFS单点内存瓶颈问题[8],但均局限于指定的应用环境,不适用其他类型文件的存储,如海量存储MP3格式的文件。

    针对HDFS单点内存瓶颈问题,本文提出了新型的上层归档文件系统,用来优化海量小文件的处理。

    4? 对小文件存储优化的实现(Implementation of

    small file storage optimization)

    4.1?? 基本思想

    上传小文件前,首先对海量小文件进行预处理,将本地目录中需要处理的小文件写入HashMap集合中,同时通过格式转换生成文件流式集合,其中小文件文件名作为key,文件内容作为value。然后以SequenceFile作为容器,再将HashMap中存储的海量小文件进行归档合并成一个大文件。最后,将合并后的大文件上传Hadoop服务器序列化存储在HDFS中,从而缓解了NameNode节点内存瓶颈问题。处理海量小文件流程如图2所示。

    图2 海量小文件处理

    Fig.2 Massive small files processing

    4.2?? SmallFilesWrite类的实现

    SmallFilesWrite类中,成员变量有两个,就是String类型的静态成员变量SOURCE_PATH和TARGET_PATH,SOURCE_PATH变量表示源路径,即预上传文件本地目录路径。TARGET_PATH表示目标路径,即上传到指定Hadoop分布式文件系统路径。成员方法主要有readFiles方法、file2Bytes方法和main方法。

    (1)readFiles方法

    上传小文件前,首先对海量小文件进行预处理,将本地目录中需要处理的小文件写入HashMap集合中,其中小文件文件名作为key,文件内容作为value。

    首先,在readFiles方法中创建一个File的对象directory,然后调用listFiles方法获取SOURCE_PATH指定路径中的文件的内容。将获取的文件存储在创建的File[]数组中。最后map对象调用put方法,将读取的小文件循环写入到HashMap集合中。这里file[]数组元素调用getName方法获取文件名,作为Map集合中的key,同时调用file2Bytes方法,将文件内容作为Map集合中的value存储。

    (2)file2Bytes方法

    在Hadoop分布式文件系统中,读写数据的方式满足流式读写,目的可以提高数据访问的吞吐量。为支持不同格式小文件合并,编写了一个file2Bytes方法,该方法的形式参数为String类型的filename,这个参数代表本地目录中预处理文件的文件名。创建FileInputStream对象fis,对其进行初始化,并抛出异常。然后使用对象fis的available方法,目的使其可以不受阻塞地从此输入流中读取(或跳过)的估计剩余字节数。再然后定义一个byte类型的long_buf数组,将本地目录中的小文件进行格式转换,转换成字节流写入long_buf数组中。这样读写数据的方式满足流式读写,同时解决了不同格式的小文件合并问题。

    (3)main方法

    main方法实现了将海量小文件进行归并处理,生成一个大文件,最后将其分布并发存储到HDFS中。通过遍历Map,迭代输出集合中元素;创建Text对象key,BytesWritable对象value,key调用set方法获取输出集合中元素的key值,value调用set方法获取拷贝的文件内容,偏移量及文件长度;返回一个SequenceFile.Writer实例,这里需要创建FileSystem和Path对象,将数据内容写入path对象,调用append方法完成小文件的追加写入。实现将海量小文件归并处理,生成一个大文件。

    4.3?? 文件的访问

    自定义一个FileOutputStream文件输出流对象,指定输出目录将需要访问的文件流式读出,将读出的文件返回给需要访问的用户。访问某文件时,首先获取SmallFilesWrite中HDFS中输入目录,创建SequenceFile.Reader对象,通过迭代获取序列文件名和该文件名所对应的文件。

    5?? 结论(Conclusion)

    本文针对Hadoop分布式文件系统的单点内存瓶颈问题,提出了采用小文件归并的优化算法。根据Hadoop存储数据特点,利用小文件合并大文件,可有效减少元数据的生成,解决了单点内存瓶颈问题。在Hadoop分布式文件系统单点内存瓶颈优化的基础上,对Hadoop分布式文件系统的性能瓶颈的优化将是本人未来主要研究的内容。

    参考文献(Reference)

    [1] Tom White,Hadoop.周敏齐,等,译.权威指南(第二版)[M].北

    京:清华大学出版社,2011.

    [2] Chuck Lam.Hadoop.韩冀中,译.实战[M].北京:人民邮电出版

    社,2011.

    [3] 雷万云,等.云计算:技术、平台及应用案例[M].北京:清华大

    学出版社,2011.

    [4] The Apache Software Foundation HDFS ArchitectureGuide[EB/

    OL].[2011-05-04].http://hadoop.apache.org/co-mmon/docs/

    current/hdfs_design.html.

    [5] DANIELN,RICH Wolski,CHRISG,etal.The Eucalyptus

    OpenSource Cloud-Computing System[J].IEEE Computer

    Society,2009,24(08):124-131.

    [6] Venner J. Pro Hadoop[M]. New York:Apress,2009.

    [7] Hadoop[EB/OL],http://hadoop.apache.org/.2011.

    [8] Grant Mackey,Saba Sehrish,Jun Wang.Improving Metadata

    Management for Small Files in HDFS[J].IEEE International

    Conference on Cluster Computing and Workshops,2009:1-4.

    作者简介:

    宋继红(1963-),女,硕士,副教授.研究领域:计算机网络

    通信,计算机网络远程控制,嵌入式技术.

    李梦楠(1989-),男,硕士生.研究领域:计算机网络.

    郝得智(1989-),男,硕士生.研究领域:计算机控制.

    [2] Chuck Lam.Hadoop.韩冀中,译.实战[M].北京:人民邮电出版

    ;?;?;?;?; 社,2011.

    [3] 雷万云,等.云计算:技术、平台及应用案例[M].北京:清华大

    ;?;?;?; 学出版社,2011.

    [4] The Apache Software Foundation HDFS ArchitectureGuide[EB/

    ;?;?;?; OL].[2011-05-04].http://hadoop.apache.org/co-mmon/docs/

    ;?;?;?; current/hdfs_design.html.

    [5] DANIELN,RICH Wolski,CHRISG,etal.The Eucalyptus

    ;?;?; OpenSource Cloud-Computing System[J].IEEE Computer

    ;?;?;?;?; Society,2009,24(08):124-131.

    [6] Venner J. Pro Hadoop[M]. New York:Apress,2009.

    [7] Hadoop[EB/OL],http://hadoop.apache.org/.2011.

    [8] Grant Mackey,Saba Sehrish,Jun Wang.Improving Metadata

    ;?; Management for Small Files in HDFS[J].IEEE International

    ;?;?;?; Conference on Cluster Computing and Workshops,2009:1-4.

    作者简介:

    宋继红(1963-),女,硕士,副教授.研究领域:计算机网络

    ;?;?;?;?;?; 通信,计算机网络远程控制,嵌入式技术.

    李梦楠(1989-),男,硕士生.研究领域:计算机网络.

    郝得智(1989-),男,硕士生.研究领域:计算机控制.

    [2] Chuck Lam.Hadoop.韩冀中,译.实战[M].北京:人民邮电出版

    ;?;?;?;?; 社,2011.

    [3] 雷万云,等.云计算:技术、平台及应用案例[M].北京:清华大

    ;?;?;?; 学出版社,2011.

    [4] The Apache Software Foundation HDFS ArchitectureGuide[EB/

    ;?;?;?; OL].[2011-05-04].http://hadoop.apache.org/co-mmon/docs/

    ;?;?;?; current/hdfs_design.html.

    [5] DANIELN,RICH Wolski,CHRISG,etal.The Eucalyptus

    ;?;?; OpenSource Cloud-Computing System[J].IEEE Computer

    ;?;?;?;?; Society,2009,24(08):124-131.

    [6] Venner J. Pro Hadoop[M]. New York:Apress,2009.

    [7] Hadoop[EB/OL],http://hadoop.apache.org/.2011.

    [8] Grant Mackey,Saba Sehrish,Jun Wang.Improving Metadata

    ;?; Management for Small Files in HDFS[J].IEEE International

    ;?;?;?; Conference on Cluster Computing and Workshops,2009:1-4.

    作者简介:

    宋继红(1963-),女,硕士,副教授.研究领域:计算机网络

    ;?;?;?;?;?; 通信,计算机网络远程控制,嵌入式技术.

    李梦楠(1989-),男,硕士生.研究领域:计算机网络.

    郝得智(1989-),男,硕士生.研究领域:计算机控制.

    [2] Chuck Lam.Hadoop.韩冀中,译.实战[M].北京:人民邮电出版

    ;?;?;?;?; 社,2011.

    [3] 雷万云,等.云计算:技术、平台及应用案例[M].北京:清华大

    ;?;?;?; 学出版社,2011.

    [4] The Apache Software Foundation HDFS ArchitectureGuide[EB/

    ;?;?;?; OL].[2011-05-04].http://hadoop.apache.org/co-mmon/docs/

    ;?;?;?; current/hdfs_design.html.

    [5] DANIELN,RICH Wolski,CHRISG,etal.The Eucalyptus

    ;?;?; OpenSource Cloud-Computing System[J].IEEE Computer

    ;?;?;?;?; Society,2009,24(08):124-131.

    [6] Venner J. Pro Hadoop[M]. New York:Apress,2009.

    [7] Hadoop[EB/OL],http://hadoop.apache.org/.2011.

    [8] Grant Mackey,Saba Sehrish,Jun Wang.Improving Metadata

    ;?; Management for Small Files in HDFS[J].IEEE International

    ;?;?;?; Conference on Cluster Computing and Workshops,2009:1-4.

    作者简介:

    宋继红(1963-),女,硕士,副教授.研究领域:计算机网络

    ;?;?;?;?;?; 通信,计算机网络远程控制,嵌入式技术.

    李梦楠(1989-),男,硕士生.研究领域:计算机网络.

    郝得智(1989-),男,硕士生.研究领域:计算机控制.

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/15 5:55:55