欢迎光临112期刊网!
网站首页 > 论文范文 > 计算机论文 > 软件技术 > 基于Hadoop文件系统的单点问题和策略探讨

基于Hadoop文件系统的单点问题和策略探讨

日期:2023-01-24 阅读量:0 所属栏目:软件技术


  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所示。

   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方法获取拷贝的文件内容,偏移量及文件长度;返回一个实例,这里需要创建FileSystem和Path对象,将数据内容写入 path对象,调用append方法完成小文件的追加写入。实现将海量小文件归并处理,生成一个大文件。

  4.3 ; ; 文件的访问

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

  5 ; ; 结论(Conclusion)

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

  参考文献(Reference)

  [1] Tom White,Hadoop.周敏齐,等,译.权威指南(第二版)[M].北 京:清华大学出版社,2011.

本文链接:http://www.qk112.com/lwfw/jsjlw/ruanjianjishu/230000.html

论文中心更多

发表指导
期刊知识
职称指导
论文百科
写作指导
论文指导
论文格式 论文题目 论文开题 参考文献 论文致谢 论文前言
教育论文
美术教育 小学教育 学前教育 高等教育 职业教育 体育教育 英语教育 数学教育 初等教育 音乐教育 幼儿园教育 中教教育 教育理论 教育管理 中等教育 教育教学 成人教育 艺术教育 影视教育 特殊教育 心理学教育 师范教育 语文教育 研究生论文 化学教育 图书馆论文 文教资料 其他教育
医学论文
医学护理 医学检验 药学论文 畜牧兽医 中医学 临床医学 外科学 内科学 生物制药 基础医学 预防卫生 肿瘤论文 儿科学论文 妇产科 遗传学 其他医学
经济论文
国际贸易 市场营销 财政金融 农业经济 工业经济 财务审计 产业经济 交通运输 房地产经济 微观经济学 政治经济学 宏观经济学 西方经济学 其他经济 发展战略论文 国际经济 行业经济 证券投资论文 保险经济论文
法学论文
民法 国际法 刑法 行政法 经济法 宪法 司法制度 法学理论 其他法学
计算机论文
计算机网络 软件技术 计算机应用 信息安全 信息管理 智能科技 应用电子技术 通讯论文
会计论文
预算会计 财务会计 成本会计 会计电算化 管理会计 国际会计 会计理论 会计控制 审计会计
文学论文
中国哲学 艺术理论 心理学 伦理学 新闻 美学 逻辑学 音乐舞蹈 喜剧表演 广告学 电视电影 哲学理论 世界哲学 文史论文 美术论文
管理论文
行政管理论文 工商管理论文 市场营销论文 企业管理论文 成本管理论文 人力资源论文 项目管理论文 旅游管理论文 电子商务管理论文 公共管理论文 质量管理论文 物流管理论文 经济管理论文 财务管理论文 管理学论文 秘书文秘 档案管理
社科论文
三农问题 环境保护 伦理道德 城镇建设 人口生育 资本主义 科技论文 社会论文 工程论文 环境科学