基于Hadoop 分布式文件系统快照技术的研究与改进
2015-03-16杨彬
杨彬
摘要:任何文件系统都具有拍摄快照的能力,快照使系统管理员在系统故障的情况下进行数据恢复。HDFS(Hadoop Distributed File System)是一个流行的大型集群商用服务器的分布式文件系统,该文为HDFS提出了一个低开销的快照解决方案。该解决方案,避免使用复杂的分布式快照算法,采用新的快照数据结构解决了在HDFS系统中的数据拷贝和分布问题,设计了一个基于选择性的追加拷贝快照解决方案。
关键词:HDFS;快照;选择性的追加拷贝;低开销
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)04-0074-05
Abstract: The ability to take snapshots is an essential functionality of any file system, as snapshots enable system administrators to perform data recovery in case of failure. HDFS(Hadoop Distributed File System)is a popular distributed file system for large clusters of commodity servers. This paper presents a low overhead snapshot solutions for HDFS. The solution obviates the need for complex distributed snapshot algorithms ,takes new snapshot data structures to data replication and distribution in HDFS. we have designed, a fast and efficient snapshot solution based on selective-copy-on-appends.
Key words: Hadoop Distributed File System; snapshot; selective-copy-on-appends; low overhead
支持关键大规模分布式数据密集型应用程序的文件系统需要具有零或最小的应用程序停机频率的自动系统备份功能。因此拍摄快照的能力已成为文件系统的基本特征,开发这样的快照方案和机制在过去已经得到相当的重视。
即写即拷(copy-on-write)是快照系统的主流技术,其研究多集中在细化快照粒度、改进索引结构、提高数据块访问效率上[1-2]。这种快照技术占用了多余的存储空间,极大地浪费了存储空间,在快照恢复时不是很灵活[3-4]。这样的快照解决方案不能很好的匹配现有的分布式文件系统如GFS和HDFS[5],这些文件系统中的几个重要方面不同于传统的文件系统。
首先,GFS和HDFS逻辑的分离出文件系统元数据和数据本身。主节点(在HDFS称为Namenode) 跟踪文件的元数据和每个文件被复制并划分为固定大小的、散布在群集节点上的数据块。在单个节点存储元数据大大简化了快照解决方案,追踪多个数据块和副本的状态需要除了快照树以外更高级的数据结构。
其次,这些文件系统的目标是读取应用程序和写入大量数据,如MapReduce和Bigtable。其结果是这些文件系统对于顺序访问磁盘进行了优化,并提供非常有限的接口:写入操作被限制为追加和修改。考虑到这些限制,使用标准即写即拷快照的解决方案会导致不必要的开销。这表明除非文件追加遵循修改操作,文件追加和修改不导致覆盖现有数据和不同快照的状态,可以用数据指针跟踪。这形成了选择性的追加拷贝(selective-copy-on-appends)快照方案的基础。
文中所描述的技术可以推广到现有的文件系统,此技术考虑了数据密集型分布式文件系统特定的体系结构,设计的方案使分布式文件系统降低了开销。
1 背景:HDFS设计
Hadoop分布式文件系统(HDFS)是一个能够对大量数据进行分布式处理的软件框架,具有较高的容错能力。HDFS采用主从结构,包括一个Namenode节点和多个Datanode节点。Namenode负责管理文件系统命名空间和访问权限。此外,Datanode负责管理数据块在节点上的存储和处理文件系统客户端的读写请求。一个文件通常被分为一个或多个数据块,这些块存储在一组Datanode 上[6-7]。Namenode管理文件系统命名空间以及有关文件和块关联的元数据。每个数据块由唯一的块ID标识,指定它在文件中的位置,线性增加生成时间戳(如图1)。因为这些都是由Namenode分配,没有两个HDFS块可以有相同的生成时间戳。HDFS的另一个独特方面,它放宽一些POSIX的要求(禁用写/锁定文件的尾部以外的地方),以实现高速数据流的访问。HDFS被设计用于批量处理应用,而不是互动的用法,它选择了低延迟高吞吐量访问应用程序的数据。
2 HDFS的快照解决方案
本节详细描述了快照的解决方案。跟踪不同快照引用的所有文件,维护容错内存快照树,如图4所示。在HDFS中,文件或目录的相关节点都会被零个或多个系统快照引用。此外,每个文件或目录都与一个整数相关联,它表示快照的数量。为了管理文件系统名称空间和防止垃圾回收器永久删除或改写块,修改了HDFS垃圾桶的功能。在HDFS文件系统中,垃圾桶是一个可插拔的模块,它类似于一个回收站。当文件被删除时,该数据仍然保持完整,仅命名空间反映删除。这使我们能够很容易地管理文件系统元数据。
2.1设计细节
本部分介绍HDFS低开销的快照解决方案。HDFS不同于传统的文件系统中的两个重要方面。首先,HDFS把元数据和数据分离。元数据被存储在一个单独的节点,实际的数据被复制并扩散到整个集群。使用单个节点来管理元数据,使我们能够使用一个单一的逻辑全球时钟,从而无需使用基于更复杂的矢量时钟快照解决方案。其次,主要针对数据密集型框架,如MapReduce, HDFS提供有限的接口,数据写操作被限制在追加和修改操作。考虑到这些限制,使用标准的即写即拷快照解决方案,导致不必要的开销。
第1节我们观察到,除非追加跟随修改操作,文件追加和修改不导致覆盖现有数据,不同快照下的状态可以用数据指针进行跟踪。这是我们选择性追加拷贝快照解决方案的基础。每当拍摄快照时,快照树(如图4) 就创建一个节点,它保存命名空间中所有文件的块ID列表以及其独特的生成时间戳。下面小节讨论,文件系统操作期间,如何更新快照树。
2.2追加拷贝
在这一部分,我们描述选择性追加拷贝快照方案。只要数据没有被覆盖,在每个块中,只需存储连续更新数据的结束指针。因此,在单个块中,当一系列的零或多个连续追加是通过一系列的零或多个修改时,基于指针的解决方案就足够了。仅当一个或多个修改后有一个或更多追加操作时,数据被覆盖,生成块的新副本(称为写时拷贝)。总之,只追加使用指针(AAA),仅修改(TTT)或追加后修改(AAATTT),一个或多个修改后追加(TTTA)时,使用写时复制创建原始块的两个副本。我们讨论了解决方案的细节,如图5所示,在HDFS中创建或者更新操作包括四个阶段:1) Namenode会生成一个时间戳;2) 客户端写元数据;3) 客户端数据流写入Datanode;4) Datanode通知Namenode操作成功。如果一个或多个数据块正在更新时拍摄快照,一旦Namenode被通知操作成功,快照树能自动更新而不影响现有操作,在HDFS中实现了选择性追加拷贝的功能。
4 结束语
在本文中,为HDFS设计、实施和评估了选择性的追加拷贝快照解决方案。该解决方案利用HDFS可以限制接口的特点,限制写操作,尽量减少写时拷贝操作的数量,使用选择性追加拷贝方法,因此在时间和内存开销方面都低于原有的即写即拷快照解决方案。在今后的工作中,该解决方案可以进一步改进并可以应用到其它分布式文件系统中,使选择性追加拷贝快照解决方案得到更广泛的应用。
参考文献:
[1] 牛超,杨英杰,代向东.一种新的复合快照技术的研究与设计[J].计算机应用与软件, 2013,30(7):164-167.
[2] NAS技术详解:SnapShot技术详解[EB/OL]. http://wenku.baidu.com/view/4f7bc52d2af90242a895e573.html.
[3] 陈莉君,康华,贾威威.云存储日志文件系统中快照的设计与实现[J].计算机应用与软件,2013,30(7):204-208.
[4] 李虓,谭毓安,李元章.一种连续数据保护系统的快照方法[J].软件学报, 2011,22(10):2523-2537.
[5] Apache Hadoop[EB/OL]. http://hadoop.apache.org/,2014.
[6] 赵铁柱,袁华强. 基于并发策略的分布式文件系统性能优化方案[J].网络安全与技术应用,2013(7):17-18.
[7] 张得震.基于Hadoop分布式文件系统优化技术研究[D].兰州:兰州交通大学,2013.