学校编码:10384 分类号 密级 学号:24320101152246 UDC
硕 士 学 位 论 文
基于 HDFS 的云存储系统设计与实现
Design and Implementation of Cloud Storage System Based on HDFS
陈 蕊
指 导 教 师: 曾 文 华 教 授
专 业 名 称: 计算机软件与理论
论文提交日期: 2 0 1 3 年 4 月
论文答辩日期: 2 0 1 3 年 6 月
学位授予日期: 2 0 1 3 年 月
指 导 教 师:
答辩委员会主席:
2013 年 6 月
厦门大学博硕士论文摘要库
厦门大学学位论文原创性声明
本人呈交的学位论文是本人在导师指导下,独立完成的研究成
果。本人在论文写作中参考其他个人或集体已经发表的研究成果,均
在文中以适当方式明确标明,并符合法律规范和《厦门大学研究生学
术活动规范(试行)
》。
另外,该学位论文为( )课题(组)
的研究成果,获得( )课题(组)经费或实验室的
资助,在( )实验室完成。
(请在以上括号内填写课
题或课题组负责人或实验室名称,未有此项声明内容的,可以不作特
别声明。)
声明人(签名):
年 月 日
厦门大学博硕士论文摘要库
II
厦门大学学位论文著作权使用声明
本人同意厦门大学根据《中华人民共和国学位条例暂行实施办
法》等规定保留和使用此学位论文,并向主管部门或其指定机构送交
学位论文(包括纸质版和电子版)
,允许学位论文进入厦门大学图书
馆及其数据库被查阅、借阅。本人同意厦门大学将学位论文加入全国
博士、硕士学位论文共建单位数据库进行检索,将学位论文的标题和
摘要汇编出版,采用影印、缩印或者其它方式合理复制学位论文。
本学位论文属于:
( )1.经厦门大学保密委员会审查核定的保密学位论文,
于 年 月 日解密,解密后适用上述授权。
( √ )2.不保密,适用上述授权。
(请在以上相应括号内打“√”或填上相应内容。保密学位论文
应是已经厦门大学保密委员会审定过的学位论文,未经厦门大学保密
委员会审定的学位论文均为公开学位论文。此声明栏不填写的,默认
为公开学位论文,均适用上述授权。)
声明人(签名)
:
年 月 日
厦门大学博硕士论文摘要库
III
摘 要
随着数据爆炸的时代到来,海量数据存储的问题也随之而来。HDFS(Hadoop Distributed File System)作为主流的开源云计算系统 Hadoop 的基础构件之一, 由于其低成本、高度容错、支持大数据集等特点成为解决数据密集型应用的海量 数据存储问题的首选方案之一。在 HDFS 越来越被广大企业重视和采用的时候, HDFS 存在的一些问题也逐渐显现。首先,因为 HDFS 采用 Master/Slaves 主从架 构,一旦 Master 节点发生故障,整个集群都无法提供服务,因此 HDFS 存在单点 故障。其次,目前针对 HDFS 系统的访问还没有很友好的用户访问工具,使用起 来门槛较高。 本文通过对 HDFS 的应用现状进行研究,从集群可用性、访问便捷性以及监 控维护简易性等角度对 HDFS 进行改进,提出了一个多角度的基于 HDFS 的云存储 系统构建方案。该方案的主要优点在于:(1)利用 DRBD 和 Heartbeat 实现了 Namenode 的双机备份,解决了 HDFS 的单点故障。(2)利用次备节点定期 Checkpoint,优化了 Namenode 重启过程,减少了 Namenode 重启和切换过程中的
等待时间。(3)改进了 WebHDFS,实现了基于 Web 的文件存储系统,提供了直观
便捷的文件系统访问方式。(4)采用 Ganglia 作为集群监控方案,提高了集群的
可监控性和易维护性。
IV
Abstract
With the arrival of the era of data explosion, the problem of mass data storage has cropped up. Hadoop is a mainstream open source cloud computing system. HDFS (Hadoop Distributed File System) is one infrastructure of it. Due to its low cost, high degree of fault tolerance, support for large data sets and other features, HDFS has become one of the preferred solutions for mass data storage problems to solve data-intensive applications. As HDFS gradually accepted by more and more enterprises, some problems emerged. On the one hand, for HDFS’s Master/Slaves architecture, once the master node fails, the entire cluster is unable to provide services. In other words, HDFS has single point of failure. On the other hand, for access to the HDFS there are not very user-friendly tools in the current. So the threshold to use HDFS is high.
On the basis of research on HDFS application status, we improved HDFS from three aspects: the availability of cluster, the convenience of access, as well as the ease of monitoring and maintenance and proposed a cloud storage system based on HDFS. The main advantages of the solution are as follows. (1) Used DRBD and Heartbeat to implement double Namenode backup and solved the single point of failure in HDFS. (2) Added a secondary Namenode to periodically checkpoint and optimized the restart process of Namenode by reducing the waiting time in the Namenode restart and switching process. (3) Improved WebHDFS and developed a Web-based file storage system, providing a convenient and intuitive way of access. (4) Chose Ganglia as the solution for cluster monitoring and improved the ease of cluster monitoring and maintenance.
Key Words: HDFS; Hadoop; Cloud Storage System
V
目 录
第一章 绪论 ... 1
1.1 研究背景和意义 ... 1 1.2 国内外研究现状 ... 1 1.3 论文的主要内容 ... 3 1.4 论文的组织结构 ... 4第二章 相关技术介绍 ... 6
2.1 HDFS 简介 ... 6 2.2 DRBD 简介 ... 8 2.3 Heartbeat 简介 ... 13 2.4 Ganglia 简介 ... 16 2.5 本章小节 ... 17第三章 系统需求分析 ... 19
3.1 功能需求分析 ... 20 3.2 非功能需求分析 ... 23 3.3 本章小结 ... 24第四章 系统设计 ... 25
4.1 系统整体架构 ... 25 4.2 集群管理模块设计 ... 26 4.2.1 主备节点数据同步... 26 4.2.2 Namenode 节点状态检测 ... 27 4.2.3 脑裂处理... 27 4.2.4 Checkpoint 机制 ... 28厦门大学博硕士论文摘要库
VI 4.2.5 IP 地址漂移 ... 29 4.3 集群访问模块设计 ... 29 4.4 集群监控模块设计 ... 32 4.5 本章小结 ... 33
第五章 系统实现 ... 35
5.1 系统开发环境简介 ... 35 5.1.1 硬件环境配置... 35 5.1.2 软件环境配置... 36 5.2 集群管理模块实现 ... 36 5.2.1 DRBD 配置 ... 36 5.2.2 Heartbeat 配置 ... 39 5.2.3 次备 Namenode 配置 ... 41 5.3 集群访问模块实现 ... 42 5.4 集群监控模块实现 ... 49 5.4.1 Ganglia 服务端配置 ... 50 5.4.2 Ganglia 客户端配置 ... 50 5.4.3 实现效果展示... 52 5.5 本章小结 ... 57第六章 系统测试 ... 58
6.1 测试环境介绍 ... 58 6.1.1 硬件环境配置... 58 6.1.2 软件环境配置... 59 6.1.3 网络环境配置... 60 6.2 集群管理模块测试 ... 60 6.2.1 DRBD 测试 ... 60厦门大学博硕士论文摘要库
VII 6.2.2 Heartbeat 测试 ... 63 6.2.3 次备 Namenode 测试 ... 68 6.3 集群访问模块测试 ... 69 6.4 本章小结 ... 71
第七章 总结与展望 ... 72
7.1 总结 ... 72 7.2 展望 ... 72参考文献 ... 73
附 录 作者在攻读硕士期间参与的科研项目与发表的论文 .. 75
致 谢 ... 76
厦门大学博硕士论文摘要库
VIII
Contents
Chapter1 Introduction ... 1
1.1 Background and Significance of Research ... 1
1.2 Research Status ... 1
1.3 Main Contents ... 3
1.4 Dissertation Organization ... 4
Chapter2 Introduction to Correlative Technology ... 6
2.1 Introduction to HDFS ... 6
2.2 Introduction to DRBD ... 8
2.3 Introduction to Heartbeat ... 13
2.4 Introduction to Ganglia ... 16
2.5 Summary ... 17
Chapter3 System Requirements Analysis ... 19
3.1 Functional Requirements Analysis ... 20
3.2 Non-functional Requirements Analysis ... 23
3.3 Summary ... 24
Chapter4 System Design ... 25
4.1 System Architecture ... 25
4.2 Design of Cluster Management Module ... 26
4.2.1 Data Synchronization of Active and Standby Nodes ... 26
4.2.2 Namenode Status Detection ... 27
4.2.3 Dealing with the Brain Split ... 27
4.2.4 Checkpoint Mechanism ... 28
4.2.5 Drift of IP Address ... 29
厦门大学博硕士论文摘要库
IX
4.3 Design of Cluster Access Module ... 29
4.4 Design of Cluster Monitoring Module ... 32
4.5 Summary ... 33
Chapter5 System Implementation ... 35
5.1 System Development Environment ... 35
5.1.1 Hardware Configuration ... 35
4.1.2 Software Configuration ... 36
5.2 Implementation of Cluster Management Module ... 36
5.2.1 DRBD Configuration ... 36
5.2.2 Heartbeat Configuration ... 39
5.2.3 Secondary Namenode Configuration ... 41
5.3 Implementation of Cluster Access Module ... 42
5.4 Implementation of Cluster Monitoring Module ... 49
5.4.1 Ganglia Server Configuration ... 50
5.4.2 Ganglia Client Configuration ... 50
5.4.3 Effect Show ... 52
5.5 Summary ... 57
Chapter6 System Testing ... 58
6.1 Testing Environment ... 58
6.1.1 Hardware Configuration ... 58
6.1.2 Software Configuration ... 59
6.1.3 Network Configuration ... 60
6.2 Testing of Cluster Management Module ... 60
6.2.1 DRBD Testing ... 60
6.2.2 Heartbeat Testing ... 63
6.2.3 Secondary Namenode Testing ... 68
厦门大学博硕士论文摘要库
X
6.3 Testing of Cluster Access Module ... 69
6.4 Summary ... 71
Chapter7 Conclusion and Future Work ... 72
7.1 Conclusion ... 72 7.2 Future Work ... 72
References ... 73
Appendix ... 75
Acknowledgements ... 76
厦门大学博硕士论文摘要库
1
第一章 绪论
1.1 研究背景和意义
随着数据爆炸时代的到来,海量数据存储的问题也随之而来。HDFS(Hadoop Distributed File System)作为主流的开源云计算系统 Hadoop 的基础构件之一, 实现了一个高可扩展的分布式文件系统,它能在普通商用机的基础上,提供高可 靠、高性能的存储服务。其具有的低成本、高度容错、支持大数据集等特点,使 它成为解决数据密集型应用的海量数据存储问题的首选方案之一,受到很多企业 的重视。Facebook、雅虎、百度和中国移动等知名公司都采用了 HDFS 作为海量 数据存储的方案之一。 在 HDFS 越来越被广大企业重视和采用的时候,HDFS 存在的一些问题也逐 渐显现。首先,因为 HDFS 采用 Master/Slaves 主从架构,一旦 Master 节点发生 故障,整个集群都无法提供服务,所以 HDFS 存在单点故障,这是在 HDFS 应 用中困扰企业的一个问题,也是企业在采用 HDFS 方案时需要考虑的重要因素。 其次,目前针对 HDFS 系统的访问还没有很友好的用户访问工具,使用起来门槛 较高。因此如何解决 HDFS 单点故障以及提供友好访问工具的成为 HDFS 应用 推广中急需解决的问题。
1.2 国内外研究现状
针对 HDFS 单点故障问题,当前主要的解决方案有以下几种: (1)Hadoop 的元数据备份方案。该方案主要是将 Namenode 的元数据信息 保存到多个目录。通常的做法是选择一个本地目录和一个远程目录,通过 NFS 进行共享,当 Namenode 发生故障时,可以启动备用机器的 Namenode,加载远 程 目 录 中 的 元 数 据 信 息 , 继 续 提 供 服 务 。 该 方 案 存 在 的 主 要 问 题 是 没 有 Checkpoint 机制,日志会无限增长,而且一旦发生故障,重启过程需要很长时间。 其次是利用 NFS 进行共享,如果配置的多个目录中有任何一个目录的保存因为 异常而阻塞,将会导致整个 HDFS 的操作阻塞,无法对外提供正常服务[1]。厦门大学博硕士论文摘要库
基于 HDFS 的云存储系统设计与实现
2
(2)Hadoop 的 Secondary Namenode 方案。该方案启动一个 Secondary Namenode 节点,该节点定期从 Namenode 节点上下载元数据信息,包括元数据 镜像文件 Fsimage 和元数据库操作日志文件 Edits,然后将 Fsimage 和 Edits 进行
合并,生成新的 Fsimage,接着在本地保存新的 Fsimage,并将其推送到 Namenode,
同时重置 Namenode 上的 Edits。该方案存在的主要问题是 Secondary Namenode 保存的只是 Checkpoint 时刻的元数据,因此,一旦 Namenode 上的元数据损坏, 通过 Checkpoint 恢复的元数据并不是 HDFS 此刻的最新数据,存在一致性问题。 (3)Hadoop 的 Checkpoint Node 方案。该方案配置了一个 Checkpoint Node, 该节点会定期从 Primary Namenode 中下载 Fsimage 和 Edits,将 Edits 与 Fsimage 进行合并,在本地形成最新的 Checkpoint,并上传到 Primary Namenode 进行更 新。当 Namenode 发生故障时,可以在备用节点上启动一个 Namenode,读取 Checkpoint 信息,继续提供服务。该方案存在的问题和 Secondary Namenode 类 似,即保存的可能不是最新数据,存在一致性问题。
(4)Hadoop 的 Backup Node 方案。该方案配置一个 Backup Node 节点,该 节点在内存和本地磁盘均保存了 HDFS 最新的元数据信息。如果 Namenode 发生 故障,可用使用 Backup Node 中的信息。Backup Node 可以直接利用内存中的元 数据信息进行 Checkpoint,保存到本地,与从 Namenode 下载元数据进行 Checkpoint 的方式相比效率更高。该方案在 Hadoop0.21 及以上的版本才支持, 存在的主要问题是,Backup Node 无法直接替换 Namenode 节点,还是需要通过 重启恢复服务,无法实现热备,并且目前只支持一个 Backup Node 连接到 Namenode[2]。 (5)利用 DRBD 机制进行元数据备份方案。该方案利用 DRBD 对元数据进 行多个备份,并保持最新状态,据当 Namenode 发生故障时,可以启动备用机器 的 Namenode,读取 DRBD 备份的元数据信息,继续提供服务。该方案存在的主 要问题和元数据备份方案类似,由于不存在 Checkpoint 机制,日志会不断增长, 而且重启会需要很长时间。
厦门大学博硕士论文摘要库
3
(6)Facebook 的 AvatarNode 方案[3]。该方案将 Active Node 作为 Primary
Namenode 对外提供服务。Standby Node 处于 Safe Mode 模式,在内存中保存 Primary Namenode 最新的元数据信息。Active Node 和 Standby Node 通过 NFS 共 享存储进行交互。Datanode 同时向 Active Node 和 Standby Node 发送 Block location 信息。当管理员确定 Primary Namenode 发生故障后,将 Standby Node 切换为 Primary Namenode。由于 Standby Node 内存中保存了所有元数据的最新 信息,因此可直接对外提供服务,大大缩短了切换时间。该方案存在的主要问题 是目前只提供一个备份节点,此外,Facebook 修改了部分源码、增加了一定的 复杂性,在软件的维护性上带来一定问题,而且可参考的资料特比较少。
(7)中国移动研究院的 NNC 方案[4]。该方案在每个 Namenode 上设置同步
代理,将主 Namenode 上的元数据同步到从 Namenode 上,当发生故障时,从剩 下的 Namenode 中选举出一个 Leader 作为主 Namenode 接管整个集群,集群采用 Heartbeat 进行故障切换,利用 Zookeeper 保存主 Namenode 信息。该方案存在的 主要问题是元数据的修改操作会对同步代理造成很大的负担,导致性能相对下降 [5]。 针对 HDFS 访问问题,Hadoop 在 1.0 的版本中提出了 WebHDFS,它是 HDFS 的 HTTP REST API,支持以 HTTP 协议对 HDFS 集群进行访问,它的优势在于 使用者无需 Hadoop 环境就可以直接访问 HDFS。但是访问是采用类似命令行语 句的方式,不易掌握。
1.3 论文的主要内容
本文通过对 HDFS 的应用现状进行研究,从集群可用性、访问便捷性以及监 控维护简易性等角度对 HDFS 进行改进,提出了一个多角度的基于 HDFS 的云 存储系统构建方案。(1)在集群可用性方面,利用 DRBD 和 Heartbeat 实现双机备份,解决 Hadoop 单点故障并利用次备 Namenode 节点进行定期 Checkpoint, 优化 Namenode 重启过程,减少等待时间;(2)在访问便捷性方面,在 Hadoop
基于 HDFS 的云存储系统设计与实现
4
WebHDFS REST API[6]的基础上开发了文件管理系统,提供便捷的 HDFS 访问形
式;(3)在方便集群监控和维护方面,采用 Ganglia 技术进行集群监控,形成了 多维度立体的基于 HDFS 的云存储系统构建方案。
1.4 论文的组织结构
本文共分成七个部分: 第一章绪论,介绍整个课题的开发背景和意义、研究现状以及论文的结构。 第二章相关技术介绍,对系统开发过程中涉及的技术进行简要介绍,主要包 括 HDFS、DRBD、Heartbeat 和 Ganglia。 第三章系统需求分析,对系统分析,归纳出涉及的功能需求和非功能需求。 第四章系统设计,对系统的主要设计进行了介绍。首先提出了系统的整体架 构,接着对系统的三个主要模块:集群管理模块、集群访问模块和集群监控模块 的设计分别进行介绍。集群管理模块主要对集群的高可用性进行设计,涉及的内 容包括节点数据同步、节点状态检测、脑裂处理、Checkpoint 机制和 IP 地址漂 移技术。集群访问模块主要是对 WebHDFS 进行改进,本章中给出了该模块需要 实现的函数操作及参数说明。集群监控模块设计涉及的内容包括当前主流集群监 控技术介绍及比较。 第五章系统实现,首先对系统开发的硬件和软件环境进行介绍,接着介绍了 集群管理模块的具体实现,其中包括 DRBD、Heartbeat 和次备 Namenode 节点的 配置。然后对集群访问模块的架构和部分代码实现进行说明,并展示了部分实现 效果。最后对集群监控模块的实现进行说明,其中包括 Ganglia 的配置和部分实 现效果展示。 第六章系统测试,首先介绍了测试环境,包括硬件配置、软件配置和网络环 境配置,接着对集群管理模块进行测试,其中包括 DRBD 测试、Heartbeat 测试 以及次备 Namenode 测试。最后对集群访问模块进行测试,给出主要的测试用例。 第七章总结与展望,对本文的研究工作进行总结,对接下来的工作重点进行厦门大学博硕士论文摘要库
requests online, or consult the interlibrary loan department in your library.
2. For users of non-CALIS member libraries, please mail to [email protected] for delivery details.