費賢舉,王樹鋒,王文
(常州工學(xué)院計算機信息工程學(xué)院,江蘇 常州 213002)
一種海量大數(shù)據(jù)云存儲系統(tǒng)框架設(shè)計
費賢舉,王樹鋒,王文
(常州工學(xué)院計算機信息工程學(xué)院,江蘇 常州 213002)
隨著數(shù)據(jù)爆炸性增長,傳統(tǒng)的存儲方式已經(jīng)不再滿足海量數(shù)據(jù)的存儲需求,云存儲技術(shù)的飛速發(fā)展,使得云存儲成為了一種新型的數(shù)據(jù)存儲解決方案。文章在分析Hadoop分布式文件系統(tǒng)HDFS的基礎(chǔ)上,提出了一種新的基于云計算環(huán)境的海量大數(shù)據(jù)存儲設(shè)計方法,主要給出了文件存儲方案設(shè)計以及副本方案設(shè)計等,為云計算海量數(shù)據(jù)存儲與管理提供了一種可行的關(guān)鍵技術(shù)方案。
海量大數(shù)據(jù);云存儲系統(tǒng);HDFS
近年來,隨著社交網(wǎng)絡(luò)、網(wǎng)絡(luò)新聞媒體和娛樂視頻等各種信息化服務(wù)的開展產(chǎn)生了大量的數(shù)據(jù),使得數(shù)據(jù)存儲規(guī)模也呈現(xiàn)爆炸性增長。個人用戶的數(shù)據(jù)存儲規(guī)模達到TB(1012B)級別,大中型企業(yè)的數(shù)據(jù)存儲甚至達到EB(1018B)級別。[1]云計算和物聯(lián)網(wǎng)的迅速發(fā)展,越來越多的個人和企業(yè)選擇將自己的業(yè)務(wù)遷移到大規(guī)模的數(shù)據(jù)中心,以此來降低本地的硬件成本和系統(tǒng)維護費用。由于數(shù)據(jù)中心存儲的數(shù)據(jù)量十分龐大,管理系統(tǒng)的復(fù)雜性較高;從存儲設(shè)備級別上看,由于數(shù)據(jù)中心為了控制成本,大量采用廉價存儲設(shè)備,致使數(shù)據(jù)極易因硬件設(shè)備故障而丟失。這些都對海量數(shù)據(jù)存儲性能、可靠性等方面帶來了挑戰(zhàn)。
云存儲是解決海量數(shù)據(jù)存儲的最有效手段。谷歌公司提出的 MapReduce[2],作為一種新的編程模型,能有效地并行處理海量的數(shù)據(jù),其采用的文件系統(tǒng)和數(shù)據(jù)管理模式分別是 GFS[3]和Big Table[4]。近些年,作為 MapReduce的開源實現(xiàn),Hadoop[5]得到了企業(yè)和研究機構(gòu)的廣泛關(guān)注。本文基于Hadoop平臺,提出了一種海量大數(shù)據(jù)云存儲系統(tǒng)設(shè)計,并分析了實現(xiàn)應(yīng)用系統(tǒng)需要實現(xiàn)的關(guān)鍵技術(shù)。
云計算是一種商業(yè)計算模式,其來源于分布式計算,并行計算和網(wǎng)格計算。Hadoop作為云計算的核心技術(shù),目前在工業(yè)界得到了廣泛的應(yīng)用。
Hadoop是Apache開源組織按照MapReduce的工作原理設(shè)計的一種開源的分布式處理框架,也是云計算環(huán)境下最著名的開源軟件。在Hadoop系統(tǒng)中,應(yīng)用程序可以并行運行在由大規(guī)模廉價硬件構(gòu)成的分布式系統(tǒng)中。Hadoop在內(nèi)部實現(xiàn)了容錯和擴展機制,可以構(gòu)建成高可靠性和高擴展性的分布式系統(tǒng)。
Hadoop主要有三部分組成:HDFS(Hadoop Distributed File System)、MapReduce分布式計算模型和Hbase(Hadoop Database),其結(jié)構(gòu)如圖1所示。
圖1 Hadoop結(jié)構(gòu)圖
HDFS[6]與谷歌的 GFS 相對應(yīng),布署在廉價的硬件設(shè)備上,是Hadoop的最底層。HDFS可以存儲TB級(甚至PB級)的海量數(shù)據(jù),并為應(yīng)用程序提供高吞吐率的數(shù)據(jù)訪問。HDFS的數(shù)據(jù)訪問是順序的,適用于數(shù)據(jù)密集型的應(yīng)用。
MapReduce[2]是一種海量數(shù)據(jù)處理的分布式計算模型。在集群中運行分布式應(yīng)用程序時,MapReduce編程模型簡單易用。Hadoop提供的MapReduce編程模型是谷歌MapReduce的開源實現(xiàn)。在MapReduce編程模型中,開發(fā)者只需要編寫Map和Reduce函數(shù),而任務(wù)調(diào)度、容錯等機制由底層實現(xiàn)。因此,即使開發(fā)者沒有分布式系統(tǒng)的經(jīng)驗也能編寫高效的分布式應(yīng)用程序。
Hbase[7]是 Big Table 的開源實現(xiàn)。Hbase 構(gòu)建在HDFS之上,提供分布式數(shù)據(jù)庫服務(wù)。Hbase提供一種按列存儲的模型,用戶可以實時讀寫,也可以在大規(guī)模數(shù)據(jù)集上進行隨機訪問。
圖2 海量數(shù)據(jù)存儲和管理框架圖
節(jié)點主要分為兩部分:一種是數(shù)據(jù)節(jié)點,另外一種是非數(shù)據(jù)結(jié)點,其中系統(tǒng)中的主要成分都是數(shù)據(jù)節(jié)點(如圖3所示的DataNode節(jié)點),非數(shù)據(jù)節(jié)點主要指管理節(jié)點和監(jiān)控節(jié)點統(tǒng)一由Master節(jié)點表示,如圖3所示。
①Client節(jié)點。這個節(jié)點主要是指需要獲取海量分布式文件系統(tǒng)數(shù)據(jù)文件的應(yīng)用程序(訪問客戶),可以是Web應(yīng)用業(yè)務(wù)服務(wù)器(如社交網(wǎng)絡(luò)、娛樂視頻、網(wǎng)絡(luò)虛擬銀行等),也可以是其他通過當前海量數(shù)據(jù)存儲系統(tǒng)的訪問接口進行訪問的其他主機和服務(wù)器。
圖3 云存儲系統(tǒng)的結(jié)構(gòu)示意圖
②DataNode節(jié)點。作為系統(tǒng)的主要構(gòu)成部分,DataNode節(jié)點負責(zé)了系統(tǒng)正常運行的大部分任務(wù),其中包括:數(shù)據(jù)存儲、提供查詢和事務(wù)處理,并且在必要時根據(jù)系統(tǒng)的需求提供計算能力。其中所有Node節(jié)點之間的關(guān)系也不完全是相同的,可以根據(jù)地域劃分鄰居節(jié)點和非鄰居節(jié)點,一般使得同一地域內(nèi)的節(jié)點都是鄰居節(jié)點,基于這種設(shè)計主要考慮到系統(tǒng)規(guī)??赡軙S著分布式數(shù)據(jù)應(yīng)用不斷增大,如果只有一層關(guān)系管理節(jié)點,將會變得很困難,并且在實際使用中,同一地域的節(jié)點之間的通信單價和質(zhì)量都是比較好的,所以讓系統(tǒng)的管理分為3層,一個Master以每個組的關(guān)系看待節(jié)點,而節(jié)點自己能夠區(qū)分是鄰居節(jié)點(同一組)還是遠程節(jié)點(不同組的)。
③Master節(jié)點。Master主要負責(zé)系統(tǒng)的整體狀態(tài)的監(jiān)控其中包括:整個系統(tǒng)的節(jié)點狀態(tài)、提供局部數(shù)據(jù)節(jié)點的查詢、保持文件塊的地址信息等。這里需要注意的是,根據(jù)系統(tǒng)負載能力的需求Master節(jié)點本身不一定是單個PC機器,也可能有幾臺機器組成一個集群共同提供服務(wù),這樣才能保證系統(tǒng)不會因為管理節(jié)點的瓶頸而受到限制。
在文件塊存儲設(shè)計時,規(guī)定每個文件塊都用一個主副本,即每次每個事務(wù)處理本文件塊的所有副本的更新都由主副本控制。每個文件塊除了本身包含的信息之外必須有以下控制信息塊。
①主副本所在節(jié)點編號。每個節(jié)點在加入系統(tǒng)時都從Master那里得到自己的唯一編號并且和自己的地址組成一個節(jié)點編號。
②副本個數(shù)。副本個數(shù)包括主副本和其他副本,如果為1說明沒有其他副本,如果為0說明此文件塊不存在。
③副本所在節(jié)點編號列表。保存所有節(jié)點編號,在必要的時候可以根據(jù)這里的節(jié)點編號找到保存了副本的節(jié)點的地址和系統(tǒng)編號以進行訪問。
在Master里面有一個根據(jù)系統(tǒng)的客戶信息生成的一個客戶編號的快照,并且有此快照構(gòu)成系統(tǒng)文件塊保存的地址信息的索引,在進行全局查詢的時候,Master就是根據(jù)這個快照表的信息進行客戶信息定位的。然后根據(jù)算法把相應(yīng)的文件塊的地址返回到應(yīng)用服務(wù)器,讓它自行直接去訪問相應(yīng)的節(jié)點。Master快照表結(jié)構(gòu)如表1。
表1 Master客戶編號快照表
Master快照表中多個客戶的信息有可能保存在同一文件塊中,文件塊出現(xiàn)重復(fù)是完全正常的。除了客戶快照表之外,Master還保存了另外一重要的表——文件塊副本表,這個表借用了Google的Big table的思想,主要包括文件塊編號表項和節(jié)點信息表項,如表2所示。
表2 文件塊副本信息表
采用Google的Chubby提供進行文件塊更新的鎖控制服務(wù),在進行事務(wù)處理的時候經(jīng)常會遇到如下問題:同一個事務(wù)中需要更新的信息不在一個文件塊中也不在一個節(jié)點中,在這個時候為了保證事務(wù)順利地完成需要在多個涉及到信息更新的節(jié)點中選擇一個作為協(xié)調(diào)節(jié)點,由它負責(zé)整個事務(wù)的更新流程和決定事務(wù)最后的成敗,即決定事務(wù)最后是成功提交還是失敗回滾。
與傳統(tǒng)分布式的處理方式Paxos算法相比,Chubby服務(wù)機制主要解決以下幾個問題。
1)開發(fā)人員在開發(fā)Service初期很少考慮到系統(tǒng)一致性的問題,也不會使用Consensus Protocol,但隨著開發(fā)進行,問題會變得越來越嚴重。Chubby服務(wù)中采用Lock Service可以解決一致性問題,同時保持系統(tǒng)原有的程序架構(gòu)和通信機制不變。
2)系統(tǒng)中很多事件發(fā)生(比如Master地址信息)是需要告知其他用戶和服務(wù)器,Chubby使用一個基于文件系統(tǒng)的鎖服務(wù)可以將這些變動寫入文件中。因此,很多的開發(fā)人員通過使用Chubby來保存Metadata和Configuration。
3)雖然基于鎖的開發(fā)接口更容易被開發(fā)人員所熟悉。但在Chubby系統(tǒng)中采用了建議性的鎖而沒有采用強制性的鎖,采用這種方式是為了方便系統(tǒng)組件之間的信息交互而不會被阻止訪問。同時,Chubby還采用了粗粒度(Coarse-Grained)鎖服務(wù)而沒有采用細粒度(Fine-Grained)鎖服務(wù),以提高系統(tǒng)性能。
4)Chubby選擇一個副本為協(xié)調(diào)者(Coordinator),協(xié)調(diào)者從客戶提交的值中選擇一個,接受消息然后廣播給所有的副本,各副本選擇接受或拒接。協(xié)調(diào)者接收大多數(shù)副本的反饋后,認為達到一致性,向個副本發(fā)Commit消息。
Chubby的結(jié)構(gòu)圖如圖4所示。
Chubby一般由5臺機器組成就足以提供上萬臺機器的鎖服務(wù),5個服務(wù)器機器都是采用完全冗余策略來保證的,在Chubby內(nèi)部采用Consensus Protocol協(xié)議保證系統(tǒng)的一致性,在每次5臺機器內(nèi)部通過此協(xié)議選出Master并且在一定時間后更新Master,在每次數(shù)據(jù)更新的時候5臺機器在Master的控制下同步更新。
Client和Chubby之間采用event進行通信,并且為了降低通信頻率,Client在本地會保存1個和自己相關(guān)的Chubby文件的cache,cache有2個狀態(tài)(1個有效,1個無效)。當文件在Chubby端發(fā)生更新的時候,Chubby通知Client文件無效,然后Client自己去更新文件。
圖4 Chubby系統(tǒng)結(jié)構(gòu)圖
Client更新DataNode節(jié)點數(shù)據(jù)文件的算法設(shè)計如圖5所示。
圖5 Client更新DataNode節(jié)點數(shù)據(jù)時序圖
其中,在DataNode節(jié)點數(shù)據(jù)更新的第四步中,如果Pipeline數(shù)據(jù)流管道中的某一個DataN-ode節(jié)點寫操作失敗,那么算法將進行如下操作。
1)關(guān)閉Pipeline數(shù)據(jù)流,然后將ack queue中的packets添加到 data queue的前面以免發(fā)生packets數(shù)據(jù)包的丟失現(xiàn)象;
2)升級在正常的DataNode節(jié)點上的保存的block的ID版本,使得發(fā)生故障的DataNode節(jié)點上的block數(shù)據(jù)會在節(jié)點恢復(fù)正常后被刪除,同時也會從Pipeline中刪除失效節(jié)點;
3)剩下的數(shù)據(jù)會被寫入到Pipeline數(shù)據(jù)流管道中的其他正常的數(shù)據(jù)節(jié)點中。
云存儲系統(tǒng)事務(wù)的恢復(fù):對于云存儲系統(tǒng)事務(wù)來說,因為處于網(wǎng)絡(luò)環(huán)境中,其恢復(fù)過程遠遠要比集中式數(shù)據(jù)庫復(fù)雜的多,在云存儲系統(tǒng)事務(wù)恢復(fù)中,本地事務(wù)的恢復(fù)類同集中式事務(wù)的恢復(fù)。而整個云存儲系統(tǒng)事務(wù)的恢復(fù)由云存儲系統(tǒng)管理器與本地事務(wù)管理器協(xié)同完成。圖6是本系統(tǒng)的全局事務(wù)恢復(fù)模型。
圖6 云存儲系統(tǒng)事務(wù)恢復(fù)模型
系統(tǒng)目錄存儲和管理是將系統(tǒng)的目錄分為若干個組,即前面所提到的按地域分組的方式。在每個組內(nèi),由Master指定一個節(jié)點專門提供目錄服務(wù),它本身也是一個普通節(jié)點,只是根據(jù)系統(tǒng)的設(shè)置成為一個為系統(tǒng)提供目錄服務(wù)的組服務(wù)器,Master同時會將所有存儲目錄的節(jié)點的地址和編號信息通知所有節(jié)點。每個節(jié)點根據(jù)自己的信息和Master提供的信息對有目錄的節(jié)點進行排序。然后在目錄查詢的時候各個節(jié)點就能夠根據(jù)已知目錄節(jié)點信息進行查詢,雖然這個節(jié)點的其他查詢?nèi)蝿?wù)也能執(zhí)行,但在設(shè)計系統(tǒng)負載平衡算法的時候,盡量減輕提供目錄查詢的節(jié)點的其他查詢?nèi)蝿?wù)。
按地區(qū)對來自客戶的訪問進行分類,并且根據(jù)客戶的IP信息通過DNS進行分流。而在同一地區(qū)的負載進行輪轉(zhuǎn)法分流本地區(qū)的各個訪問到本地區(qū)的不同數(shù)據(jù)節(jié)點上,同時保持Master和DNS之間的通信,Master根據(jù)節(jié)點自身反應(yīng)的信息對DNS中的各個節(jié)點的權(quán)值進行調(diào)整,及時調(diào)整系統(tǒng)的負載平衡。
本文首先分析了Hadoop云計算平臺,在文件系統(tǒng)架構(gòu)層次中本系統(tǒng)盡量保持云計算平臺的各種優(yōu)勢,提出了一種基于Hadoop的海量大數(shù)據(jù)云存儲系統(tǒng)設(shè)計方案。對文件塊的可讀性特性方面進行了改進,并分析了實現(xiàn)應(yīng)用系統(tǒng)所需要的關(guān)鍵技術(shù),為云計算海量數(shù)據(jù)存儲與管理提供了一種可行的關(guān)鍵技術(shù)方案。
[1]沈志榮,易樂天,舒繼武.大規(guī)模數(shù)據(jù)中心的數(shù)據(jù)存儲可靠性[J].中國計算機學(xué)會通訊,2012,8(10):8 -16.
[2]Dean J,Ghemawat S.MapReduce:Simplified Data Processing on Large Clusters[J].Communications of the ACM,2008,51(1):107-113.
[3]Ghemawat S,Gobioff H,Leung Shun-Tak.The Google File System[J].ACM SIGOPS Operating Systems Review,2003,37(5):29-43.
[4]Chang F,Dean J,Ghemawat S,et al.Bigtable:A Distributed Storage System for Structured Data[J].ACM Transactions on Computer Systems(TOCS),2008,26(2):4.
[5]武海平,余宏亮,鄭緯民,等.聯(lián)網(wǎng)審計系統(tǒng)中海量數(shù)據(jù)的存儲與管理策略[J].計算機學(xué)報,2006,29(4):618 -624.
[6]崔杰,李陶深,蘭紅星.基于 Hadoop的海量數(shù)據(jù)存儲平臺設(shè)計與開發(fā)[J].計算機研究與發(fā)展,2012,49(z1):12 -18.
[7]劉樹仁,宋亞奇,朱永利,等.基于 Hadoop的智能電網(wǎng)狀態(tài)監(jiān)測數(shù)據(jù)存儲研究[J].計算機科學(xué),2013,40(1):81 -84.
[8]Zeng Wenying,Zhao Yuelong,Ou Kairi,et al.Research on Cloud Storage Architecture and Key Technologies[C]//Proceedings of the 2nd International Conference on Interaction Sciences:Information Technology,Culture and Human.ACM,2009.
[9]Robert G L,Gu Yuhong,Sabala N,et al.Compute and Storage Clouds Using Wide Area High performance Networks[J].Future Generation Computer Systems,2009,25(2):179 -183.
[10]Storer M W,Greenan K,Long D D E,et al.Secure Data Deduplication[C]//4thInternation Workshop on StorageSS'08,Virginia:Fairfax,2008:1 -10.
Designing a Cloud Storage System of Massive Data
FEI Xianju,WANG Shufeng,WANG Wen
(School of Computer Information Engineering,Changzhou Institute of Technology,Changzhou 213002)
With the explosion of data,traditional storage methods no longer meet the massive data storage requirements.The rapid development of cloud storage technology makes cloud storage become a new type of data storage solution.Based on the Hadoop Distributed File System(HDFS),this paper puts forward a new type of distributed cloud storage solution for massive data,providing the persistence of high availability of data storage.This paper proposes a framework of storage and management of massive data,and analyzes key techniques that we need to implement the proposed framework.
massive data;cloud storage system;HDFS
TP312
A
1671-0436(2014)03-0038-05
2014-05-06
常州市2012年科技局應(yīng)用基礎(chǔ)研究計劃項目(CJ20120009);常州工學(xué)院2013年度校級科研基金項目(YN1316)
費賢舉(1975— ),男,碩士,講師。
責(zé)任編輯:陳 亮