楊彬
摘要:任何文件系統(tǒng)都具有拍攝快照的能力,快照使系統(tǒng)管理員在系統(tǒng)故障的情況下進行數(shù)據(jù)恢復(fù)。HDFS(Hadoop Distributed File System)是一個流行的大型集群商用服務(wù)器的分布式文件系統(tǒng),該文為HDFS提出了一個低開銷的快照解決方案。該解決方案,避免使用復(fù)雜的分布式快照算法,采用新的快照數(shù)據(jù)結(jié)構(gòu)解決了在HDFS系統(tǒng)中的數(shù)據(jù)拷貝和分布問題,設(shè)計了一個基于選擇性的追加拷貝快照解決方案。
關(guān)鍵詞: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
支持關(guān)鍵大規(guī)模分布式數(shù)據(jù)密集型應(yīng)用程序的文件系統(tǒng)需要具有零或最小的應(yīng)用程序停機頻率的自動系統(tǒng)備份功能。因此拍攝快照的能力已成為文件系統(tǒng)的基本特征,開發(fā)這樣的快照方案和機制在過去已經(jīng)得到相當?shù)闹匾暋?/p>
即寫即拷(copy-on-write)是快照系統(tǒng)的主流技術(shù),其研究多集中在細化快照粒度、改進索引結(jié)構(gòu)、提高數(shù)據(jù)塊訪問效率上[1-2]。這種快照技術(shù)占用了多余的存儲空間,極大地浪費了存儲空間,在快照恢復(fù)時不是很靈活[3-4]。這樣的快照解決方案不能很好的匹配現(xiàn)有的分布式文件系統(tǒng)如GFS和HDFS[5],這些文件系統(tǒng)中的幾個重要方面不同于傳統(tǒng)的文件系統(tǒng)。
首先,GFS和HDFS邏輯的分離出文件系統(tǒng)元數(shù)據(jù)和數(shù)據(jù)本身。主節(jié)點(在HDFS稱為Namenode) 跟蹤文件的元數(shù)據(jù)和每個文件被復(fù)制并劃分為固定大小的、散布在群集節(jié)點上的數(shù)據(jù)塊。在單個節(jié)點存儲元數(shù)據(jù)大大簡化了快照解決方案,追蹤多個數(shù)據(jù)塊和副本的狀態(tài)需要除了快照樹以外更高級的數(shù)據(jù)結(jié)構(gòu)。
其次,這些文件系統(tǒng)的目標是讀取應(yīng)用程序和寫入大量數(shù)據(jù),如MapReduce和Bigtable。其結(jié)果是這些文件系統(tǒng)對于順序訪問磁盤進行了優(yōu)化,并提供非常有限的接口:寫入操作被限制為追加和修改??紤]到這些限制,使用標準即寫即拷快照的解決方案會導致不必要的開銷。這表明除非文件追加遵循修改操作,文件追加和修改不導致覆蓋現(xiàn)有數(shù)據(jù)和不同快照的狀態(tài),可以用數(shù)據(jù)指針跟蹤。這形成了選擇性的追加拷貝(selective-copy-on-appends)快照方案的基礎(chǔ)。
文中所描述的技術(shù)可以推廣到現(xiàn)有的文件系統(tǒng),此技術(shù)考慮了數(shù)據(jù)密集型分布式文件系統(tǒng)特定的體系結(jié)構(gòu),設(shè)計的方案使分布式文件系統(tǒng)降低了開銷。
1 背景:HDFS設(shè)計
Hadoop分布式文件系統(tǒng)(HDFS)是一個能夠?qū)Υ罅繑?shù)據(jù)進行分布式處理的軟件框架,具有較高的容錯能力。HDFS采用主從結(jié)構(gòu),包括一個Namenode節(jié)點和多個Datanode節(jié)點。Namenode負責管理文件系統(tǒng)命名空間和訪問權(quán)限。此外,Datanode負責管理數(shù)據(jù)塊在節(jié)點上的存儲和處理文件系統(tǒng)客戶端的讀寫請求。一個文件通常被分為一個或多個數(shù)據(jù)塊,這些塊存儲在一組Datanode 上[6-7]。Namenode管理文件系統(tǒng)命名空間以及有關(guān)文件和塊關(guān)聯(lián)的元數(shù)據(jù)。每個數(shù)據(jù)塊由唯一的塊ID標識,指定它在文件中的位置,線性增加生成時間戳(如圖1)。因為這些都是由Namenode分配,沒有兩個HDFS塊可以有相同的生成時間戳。HDFS的另一個獨特方面,它放寬一些POSIX的要求(禁用寫/鎖定文件的尾部以外的地方),以實現(xiàn)高速數(shù)據(jù)流的訪問。HDFS被設(shè)計用于批量處理應(yīng)用,而不是互動的用法,它選擇了低延遲高吞吐量訪問應(yīng)用程序的數(shù)據(jù)。
2 HDFS的快照解決方案
本節(jié)詳細描述了快照的解決方案。跟蹤不同快照引用的所有文件,維護容錯內(nèi)存快照樹,如圖4所示。在HDFS中,文件或目錄的相關(guān)節(jié)點都會被零個或多個系統(tǒng)快照引用。此外,每個文件或目錄都與一個整數(shù)相關(guān)聯(lián),它表示快照的數(shù)量。為了管理文件系統(tǒng)名稱空間和防止垃圾回收器永久刪除或改寫塊,修改了HDFS垃圾桶的功能。在HDFS文件系統(tǒng)中,垃圾桶是一個可插拔的模塊,它類似于一個回收站。當文件被刪除時,該數(shù)據(jù)仍然保持完整,僅命名空間反映刪除。這使我們能夠很容易地管理文件系統(tǒng)元數(shù)據(jù)。
2.1設(shè)計細節(jié)
本部分介紹HDFS低開銷的快照解決方案。HDFS不同于傳統(tǒng)的文件系統(tǒng)中的兩個重要方面。首先,HDFS把元數(shù)據(jù)和數(shù)據(jù)分離。元數(shù)據(jù)被存儲在一個單獨的節(jié)點,實際的數(shù)據(jù)被復(fù)制并擴散到整個集群。使用單個節(jié)點來管理元數(shù)據(jù),使我們能夠使用一個單一的邏輯全球時鐘,從而無需使用基于更復(fù)雜的矢量時鐘快照解決方案。其次,主要針對數(shù)據(jù)密集型框架,如MapReduce, HDFS提供有限的接口,數(shù)據(jù)寫操作被限制在追加和修改操作??紤]到這些限制,使用標準的即寫即拷快照解決方案,導致不必要的開銷。
第1節(jié)我們觀察到,除非追加跟隨修改操作,文件追加和修改不導致覆蓋現(xiàn)有數(shù)據(jù),不同快照下的狀態(tài)可以用數(shù)據(jù)指針進行跟蹤。這是我們選擇性追加拷貝快照解決方案的基礎(chǔ)。每當拍攝快照時,快照樹(如圖4) 就創(chuàng)建一個節(jié)點,它保存命名空間中所有文件的塊ID列表以及其獨特的生成時間戳。下面小節(jié)討論,文件系統(tǒng)操作期間,如何更新快照樹。
2.2追加拷貝
在這一部分,我們描述選擇性追加拷貝快照方案。只要數(shù)據(jù)沒有被覆蓋,在每個塊中,只需存儲連續(xù)更新數(shù)據(jù)的結(jié)束指針。因此,在單個塊中,當一系列的零或多個連續(xù)追加是通過一系列的零或多個修改時,基于指針的解決方案就足夠了。僅當一個或多個修改后有一個或更多追加操作時,數(shù)據(jù)被覆蓋,生成塊的新副本(稱為寫時拷貝)??傊?,只追加使用指針(AAA),僅修改(TTT)或追加后修改(AAATTT),一個或多個修改后追加(TTTA)時,使用寫時復(fù)制創(chuàng)建原始塊的兩個副本。我們討論了解決方案的細節(jié),如圖5所示,在HDFS中創(chuàng)建或者更新操作包括四個階段:1) Namenode會生成一個時間戳;2) 客戶端寫元數(shù)據(jù);3) 客戶端數(shù)據(jù)流寫入Datanode;4) Datanode通知Namenode操作成功。如果一個或多個數(shù)據(jù)塊正在更新時拍攝快照,一旦Namenode被通知操作成功,快照樹能自動更新而不影響現(xiàn)有操作,在HDFS中實現(xiàn)了選擇性追加拷貝的功能。
4 結(jié)束語
在本文中,為HDFS設(shè)計、實施和評估了選擇性的追加拷貝快照解決方案。該解決方案利用HDFS可以限制接口的特點,限制寫操作,盡量減少寫時拷貝操作的數(shù)量,使用選擇性追加拷貝方法,因此在時間和內(nèi)存開銷方面都低于原有的即寫即拷快照解決方案。在今后的工作中,該解決方案可以進一步改進并可以應(yīng)用到其它分布式文件系統(tǒng)中,使選擇性追加拷貝快照解決方案得到更廣泛的應(yīng)用。
參考文獻:
[1] 牛超,楊英杰,代向東.一種新的復(fù)合快照技術(shù)的研究與設(shè)計[J].計算機應(yīng)用與軟件, 2013,30(7):164-167.
[2] NAS技術(shù)詳解:SnapShot技術(shù)詳解[EB/OL]. http://wenku.baidu.com/view/4f7bc52d2af90242a895e573.html.
[3] 陳莉君,康華,賈威威.云存儲日志文件系統(tǒng)中快照的設(shè)計與實現(xiàn)[J].計算機應(yīng)用與軟件,2013,30(7):204-208.
[4] 李虓,譚毓安,李元章.一種連續(xù)數(shù)據(jù)保護系統(tǒng)的快照方法[J].軟件學報, 2011,22(10):2523-2537.
[5] Apache Hadoop[EB/OL]. http://hadoop.apache.org/,2014.
[6] 趙鐵柱,袁華強. 基于并發(fā)策略的分布式文件系統(tǒng)性能優(yōu)化方案[J].網(wǎng)絡(luò)安全與技術(shù)應(yīng)用,2013(7):17-18.
[7] 張得震.基于Hadoop分布式文件系統(tǒng)優(yōu)化技術(shù)研究[D].蘭州:蘭州交通大學,2013.