程付超,苗 放,2,陳 墾
(1.成都理工大學 地球探測與信息技術教育部重點實驗室,四川 成都610059;2.成都理工大學地質(zhì)災害防治與地質(zhì)環(huán)境保護國家重點實驗室,四川 成都610059)
分布式文件系統(tǒng)的元數(shù)據(jù)管理直接影響到系統(tǒng)的性能、擴展性、穩(wěn)定性和可靠性。目前,分布式文件系統(tǒng)大多將元數(shù)據(jù)全部緩存到服務器內(nèi)存中進行管理[1],按照其部署方式可分為集中式元數(shù)據(jù)管理模型、分布式元數(shù)據(jù)管理模型和無元數(shù)據(jù)模型三類[2],見表1。多數(shù)分布式文件系統(tǒng)采用了集中式的元數(shù)據(jù)管理模型[3-7],如GFS[3]、HDFS[4]、Lustre[5]等;GlusterFS[8]中采用了無元數(shù)據(jù)模型。但隨著當前各類應用系統(tǒng)中數(shù)據(jù)量的爆發(fā)性增長,元數(shù)據(jù)的數(shù)據(jù)量已經(jīng)逐漸超過單臺服務器的內(nèi)存上限,采用分布式元數(shù)據(jù)管理模型是未來的發(fā)展趨勢[9,10]。因此,如何在多臺元數(shù)據(jù)服務器間進行高效低開銷的元數(shù)據(jù)同步,維護元數(shù)據(jù)的一致性,成為一個需要解決的重要問題。目前主要存在兩種解決辦法:
(1)使用多個獨立命名空間。一些分布式文件系統(tǒng),比如HDFS Federation[11],讓每臺元數(shù)據(jù)服務器單獨管理一個命名空間,服務器間不需要互相協(xié)調(diào)。這種方法從根本上消除了同步元數(shù)據(jù)的必要性,其性能與使用集中式模型的系統(tǒng)一致;但這種方法沒有完全解決單點故障問題,當某個元數(shù)據(jù)服務器宕機時,其管理的相應文件便不可訪問。
(2)使用分布式共享內(nèi)存技術。一些分布式文件系統(tǒng)采用了硬件級的分布式共享內(nèi)存技術(如MMP、SMP和cc-NUMA)[2],雖然可以明顯提高系統(tǒng)性能,并抵消同步性能開銷,卻大大增加了系統(tǒng)的構(gòu)建成本。
表1 元數(shù)據(jù)管理模型對比
針對分布式文件系統(tǒng)元數(shù)據(jù)管理模型存在的上述不足,本文借鑒Spark計算框架中RDDs[12]的設計思路,提出了一種分布式的內(nèi)存抽象——工作-備份數(shù)據(jù)集(workingbackup dataset,WBD),將內(nèi)存區(qū)域抽象為數(shù)據(jù)集,并通過數(shù)據(jù)集操作來實現(xiàn)內(nèi)存訪問,減小了數(shù)據(jù)同步時內(nèi)存操作的復雜度,降低了元數(shù)據(jù)同步造成的額外性能開銷。在WBD 的基礎上,本文設計了一種分布式文件系統(tǒng)元數(shù)據(jù)管理模型——自應從模型(self-adaptation master-slave,SAMS),通過數(shù)據(jù)的放置、更新和同步策略,實現(xiàn)元數(shù)據(jù)管理的自適應性。實驗分析表明,采用SAMS作為分布式文件系統(tǒng)的元數(shù)據(jù)管理模型,不但能夠提供高性能的元數(shù)據(jù)服務,還能夠保證元數(shù)據(jù)服務的高容錯性和高擴展性。
工作-備份數(shù)據(jù)集是一種內(nèi)存抽象,也是一種面向高效數(shù)據(jù)訪問服務的分布式數(shù)據(jù)集,它將內(nèi)存區(qū)域抽象為數(shù)據(jù)集形式,通過數(shù)據(jù)集操作來訪問內(nèi)存區(qū)域,實現(xiàn)基于內(nèi)存的數(shù)據(jù)高效查詢、更新和同步等功能,同時具備多種工作狀態(tài),可以為分布式文件系統(tǒng)的元數(shù)據(jù)管理提供支持。
工作-備份數(shù)據(jù)集由數(shù)據(jù)集版本、工作數(shù)據(jù)集和備份數(shù)據(jù)集三部分構(gòu)成。
1.1.1 數(shù)據(jù)集版本
數(shù)據(jù)集版本(dataset version,DV)是進行數(shù)據(jù)一致性校驗和數(shù)據(jù)恢復的重要依據(jù)。版本的內(nèi)容包括WBD 名稱、當前版本號和歷史版本。WBD 名稱是在全局維護的WBD 唯一標識符;當前版本號是與最新的數(shù)據(jù)集相對應的WBD 版本;歷史版本用于查詢WBD 的更新歷史,進行數(shù)據(jù)恢復。數(shù)據(jù)集版本存儲在服務器的外部存儲器上,同時也被緩存到內(nèi)存里。
1.1.2 工作數(shù)據(jù)集
WBD 中的工作數(shù)據(jù)集(working dataset,WD)用于提供數(shù)據(jù)的查詢、更新和同步等功能,被緩存到服務器內(nèi)存中。工作數(shù)據(jù)集由服務數(shù)據(jù)集和操作數(shù)據(jù)集組成。
(1)服務數(shù)據(jù)集(service dataset,SD)
服務數(shù)據(jù)集是WBD 中的主要數(shù)據(jù)集,WBD 的絕大部分數(shù)據(jù)記錄都被放置在服務數(shù)據(jù)集中。SD 主要用于提供數(shù)據(jù)的查詢服務,因此只支持讀操作和批量寫入操作,而不支持細粒度的寫操作,這樣就減少了數(shù)據(jù)的更新頻率,從而降低了更新造成的性能開銷。
(2)操作數(shù)據(jù)集(operation dataset,OD)
操作數(shù)據(jù)集在WBD 中占的比重較小,但卻非常重要,數(shù)據(jù)的查詢和更新等操作的完成都在一定程度上依賴于操作數(shù)據(jù)集。OD 中放置的是對當前數(shù)據(jù)集的實時操作記錄,這些操作記錄按照順序排列,組成一個操作隊列。相對于SD,OD 支持完整的讀寫操作,其數(shù)據(jù)更新和同步都較為頻繁,但由于其數(shù)據(jù)總量較小,造成的性能開銷也就相對較小。
1.1.3 備份數(shù)據(jù)集
備份數(shù)據(jù)集(backup dataset,BD)存在于外部存儲器上,以文件形式存儲,主要用于數(shù)據(jù)的加載和恢復,由補丁和鏡像構(gòu)成。
(1)補丁(patch):補丁是操作數(shù)據(jù)集的備份數(shù)據(jù),由持久化操作生成。在一個WBD 中一般存在一個或多個補丁,每個補丁與一個數(shù)據(jù)集版本相對應,通過補丁能夠?qū)BD 恢復到其任意版本。
(2)鏡像(image):鏡像是WBD 中服務數(shù)據(jù)集的備份數(shù)據(jù),通過持久化操作寫入外部存儲器。鏡像中記錄了對應的數(shù)據(jù)集版本和此版本服務數(shù)據(jù)集的全部數(shù)據(jù)記錄,可以用于節(jié)點重啟和宕機之后服務數(shù)據(jù)集的恢復。每個WBD只有一個鏡像文件,老版本的鏡像將被替換。
WBD 提供了較為豐富的數(shù)據(jù)集操作,能夠滿足分布式文件系統(tǒng)元數(shù)據(jù)管理的需要。按照操作對象的不同,WBD操作可以分為基本操作、工作數(shù)據(jù)集操作和備份數(shù)據(jù)集操作三類,見表2。
表2 WBD 提供的操作
1.2.1 數(shù)據(jù)融合
數(shù)據(jù)融合是WBD 的核心操作,通過數(shù)據(jù)融合能夠?qū)φ麄€數(shù)據(jù)集進行更新。其步驟為:①將OD 中的操作記錄持久化到外部存儲器上,成為新的補丁;②將OD 中的操作記錄融合到SD 中,實現(xiàn)對SD 的批量更新,融合算法如圖1所示。③清空OD,并生成新的數(shù)據(jù)集版本,融合完畢。
圖1 數(shù)據(jù)融合算法流程
1.2.2 數(shù)據(jù)恢復
WBD 的數(shù)據(jù)恢復主要是對工作數(shù)據(jù)集進行恢復,而對其中的OD 和SD 采用了不同的恢復方式。OD 的恢復通過與其它節(jié)點進行同步來完成。SD 的恢復通過版本、鏡像和補丁來完成,能夠?qū)D 恢復到剛剛完成某次融合之后的狀態(tài),流程如圖2所示。
1.2.3 分裂與合并
WBD 支持在線的分裂和合并操作。
(1)WBD 的分裂:在進行分裂操作時,會首先對原始WBD 進行一次數(shù)據(jù)融合,然后創(chuàng)建兩個新的WBD,將原始WBD 的服務數(shù)據(jù)集進行劃分后,分別存入新的WBD中,并將數(shù)據(jù)持久化為各自的初始補丁,最后設置好初始版本,完成分裂操作。分裂操作的關鍵在于服務數(shù)據(jù)集中數(shù)據(jù)記錄的劃分算法,可以采用的算法包括排序算法,隨機算法,hash算法,局部匹配算法等,在實際應用中可以根據(jù)需要進行選擇。
圖2 服務數(shù)據(jù)集恢復流程
(2)WBD 的合并:與分裂操作類似,在進行合并操作時,也會首先對兩個WBD 進行一次數(shù)據(jù)融合,然后創(chuàng)建一個新的WBD,將兩個服務數(shù)據(jù)集合并為一個寫入新的WBD 中,并持久化為初始補丁,最后設置初始版本,完成合并操作。
工作-備份數(shù)據(jù)集具有預備和活動兩種工作狀態(tài),分別對應于不同的功能,通過加載、恢復和釋放操作可以實現(xiàn)WBD 狀態(tài)切換,如圖3所示。
圖3 WBD 狀態(tài)切換
(1)預備狀態(tài)。WBD 部署完成等待載入的狀態(tài)叫做預備狀態(tài),在這種狀態(tài)下,工作數(shù)據(jù)集相關的操作都無法執(zhí)行,WBD 不能提供服務,但并不影響數(shù)據(jù)恢復、同步和校驗等操作的執(zhí)行。
(2)活動狀態(tài)。將工作數(shù)據(jù)集緩存到內(nèi)存中,并開始提供數(shù)據(jù)服務的狀態(tài),叫做WBD 的活動狀態(tài)?;顒訝顟B(tài)是WBD 的工作狀態(tài),在這種狀態(tài)下WBD 提供的所有操作都能夠執(zhí)行,從而提供高效的數(shù)據(jù)訪問服務。
工作-備份數(shù)據(jù)集與分布式共享內(nèi)存的對比見表3。
表3 工作-備份數(shù)據(jù)集與分布式共享內(nèi)存的對比
SAMS是一種主-從模式的分布式元數(shù)據(jù)管理模型,由一個控制節(jié)點(controller)和多個工作節(jié)點(worker)構(gòu)成,并通過工作-備份數(shù)據(jù)集實現(xiàn)元數(shù)據(jù)的共享和同步。SAMS維護全局唯一的命名空間,沿用了HDFS/HDFS Federation中目錄分層的命名空間劃分算法,將命名空間分為多個子空間,每個子命名空間的元數(shù)據(jù)通過一個WBD 進行管理,這樣整個命名空間就劃分成了多個WBD,這些WBD 會被分配到工作節(jié)點,并提供元數(shù)據(jù)服務。為了保證SAMS的容錯性,每個WBD 被分配到至少3 個不同的工作節(jié)點。SAMS組成結(jié)構(gòu)如圖4所示。
圖4 SAMS組成結(jié)構(gòu)
(1)控制節(jié)點。控制節(jié)點負責整個SAMS集群中各節(jié)點的數(shù)據(jù)同步、數(shù)據(jù)備份、負載均衡和故障恢復等任務??刂乒?jié)點會按照命名空間的劃分,將各子命名空間對應的WBD 分配給各個工作節(jié)點,并對所有工作節(jié)點的狀態(tài)進行監(jiān)控,維護元數(shù)據(jù)集群的負載均衡。為了保證元數(shù)據(jù)的一致性,控制節(jié)點上還建立了同步緩存,用于對數(shù)據(jù)同步進行協(xié)調(diào)。同步緩存是一個FIFO 隊列,其中按序存儲了各節(jié)點發(fā)來的更新記錄,每條記錄由更新的序號、內(nèi)容、目標WBD 和目標節(jié)點四部分信息構(gòu)成。
(2)工作節(jié)點。工作節(jié)點是SAMS中提供元數(shù)據(jù)服務的節(jié)點,負責通過WBD 管理分配到的子命名空間,提供目錄查詢、數(shù)據(jù)定位等元數(shù)據(jù)服務。每個工作節(jié)點上可以運行一個或多個WBD,這些WBD 之間相互獨立,不需要互相協(xié)調(diào),各自管理自己的子命名空間。
2.2.1 數(shù)據(jù)放置策略
在分布式文件系統(tǒng)中,元數(shù)據(jù)的數(shù)據(jù)總量相對較小,雖然可能超過單個節(jié)點的內(nèi)存容量,但在節(jié)點的外部存儲器上進行全冗余備份是可行的。因此,對于構(gòu)成命名空間的WBD,SAMS按照 “全冗余部署,分布式運行”的策略進行放置:
(1)全冗余部署。在全部節(jié)點(包括控制節(jié)點)上對WBD 按照全冗余方式進行部署,保證每個節(jié)點在數(shù)據(jù)上的一致性;
(2)分布式運行。工作節(jié)點按照分配的子命名空間,加載相應的WBD,使之進入活動狀態(tài),開始提供元數(shù)據(jù)服務。
以這種方式進行數(shù)據(jù)放置,從局部看,每個工作節(jié)點上都部署了全部的WBD,并且大部分都處于預備狀態(tài),控制節(jié)點可以根據(jù)集群負載狀況,隨時對命名空間的劃分進行調(diào)整,保證了元數(shù)據(jù)服務的可用性;從全局看,所有節(jié)點(包括控制節(jié)點在內(nèi))在物理上都是對等的,只是運行的程序和WBD 有所不同,為實現(xiàn)節(jié)點的自適應控制提供了條件。
2.2.2 數(shù)據(jù)更新策略
SAMS的數(shù)據(jù)更新通過WBD 相關操作實現(xiàn),具有實時和異步兩種不同的更新策略:
(1)實時更新。SAMS通過登記操作對活動狀態(tài)WBD的OD 進行實時更新,WBD 中其余部分的數(shù)據(jù)都直接或間接的來自于OD,保證了OD 數(shù)據(jù)的有效性,也就保證了整個WBD 的數(shù)據(jù)是有效的。
(2)異步更新。對于WBD 的其余部分,采用異步方式進行數(shù)據(jù)更新。SAMS會根據(jù)OD 的數(shù)據(jù)量大小,定期執(zhí)行融合操作,實現(xiàn)對SD、補丁和數(shù)據(jù)集版本的更新;對于鏡像文件,SAMS會根據(jù)工作節(jié)點負載情況,選擇負載較低的時候通過持久化操作對鏡像文件進行更新。
通過這樣的更新策略,SAMS將數(shù)據(jù)的更新過程進行了分解,避免一次性更新?lián)斐蛇^大的服務器性能開銷。
2.2.3 數(shù)據(jù)同步策略
為了保證元數(shù)據(jù)的一致性,提供可靠的元數(shù)據(jù)服務,SAMS中需要對元數(shù)據(jù)進行同步,采用了強一致性同步和最終一致性同步兩種策略,分別與數(shù)據(jù)更新策略中實時更新和異步更新相對應。
(1)強一致性同步。在SAMS中元數(shù)據(jù)服務通過活動狀態(tài)的WBD 提供,因此需要對活動狀態(tài)的WBD 維護強一致性。又由于WBD 中OD 是更新較為頻繁的部分,且對元數(shù)據(jù)的查詢和更新等操作都在一定程度上依賴于OD,所以SAMS對OD 采用了強一致性的同步策略,具體方法是:當某工作節(jié)點需要更新OD 時,會先將更新數(shù)據(jù)同步到控制節(jié)點上,控制節(jié)點為這些數(shù)據(jù)分配一個序號后放入同步緩存中,并將序號返回給該工作節(jié)點,工作節(jié)點按照序號將更新數(shù)據(jù)插入OD 中;當同步緩存不為空時,控制節(jié)點會按序取出記錄,并將其轉(zhuǎn)發(fā)給所有目標節(jié)點。OD 的強一致性同步,不但保證了元數(shù)據(jù)服務的一致性,也保證了各節(jié)點在進行融合操作時對SD、數(shù)據(jù)集版本和補丁的更新是一致的(根據(jù)FLP 結(jié)論),對維護整個WBD 的一致性具有較大的影響。
(2)最終一致性同步。SAMS中最終一致性同步主要使用在對預備狀態(tài)WBD 的同步上。這些WBD 并不用于提供元數(shù)據(jù)服務,因此其數(shù)據(jù)一致性要求相對較低,由節(jié)點自行決定在何時同步,其同步方法可以直接采用分布式文件系統(tǒng)數(shù)據(jù)同步的方法。
SAMS的自適應特性包括控制節(jié)點的自適應性、工作節(jié)點的自適應性和命名空間的自適應性。
2.3.1 控制節(jié)點的自適應性
由于節(jié)點都是對等的,當集群需要一個新的控制節(jié)點時(比如第一次運行或是原控制節(jié)點宕機),SAMS可以通過控制節(jié)點選舉算法從所有節(jié)點中快速選出一個新的控制節(jié)點,因此SAMS中的控制節(jié)點是具有自適應性的。
從易于實現(xiàn)的角度出發(fā),SAMS采用了一種仿效Paxos的兩階段選舉算法SimpleElect,通過節(jié)點之間的消息傳遞,實現(xiàn)控制節(jié)點的選舉。按照SimpleElect算法,選舉過程分為Propose和Accept兩個階段,每個階段又包括Request和Response兩個部分,系統(tǒng)中同一時刻可能存在多個正在進行的選舉,但只有一個選舉能夠完整執(zhí)行Accept階段,并完成選舉。SimpleElect算法中,同一節(jié)點可以同時扮演兩種角色Proposer和Acceptor,分別用于發(fā)起選舉和接受選舉。當某工作節(jié)點發(fā)現(xiàn)控制節(jié)點宕機時,開始執(zhí)行SimpleElect,發(fā)起選舉,算法流程如下:
(1)Propose request:Proposer向Acceptor廣播選舉請求消息,內(nèi)容為選舉編號和節(jié)點ID。每個Proposer的選舉編號都從1開始,按選舉次數(shù)遞增。
(2)Propose response:Acceptor接收到選舉請求消息后,判斷收到的選舉編號是否大于本地緩存的最大選舉編號:是,則緩存新編號,并回復接受消息,內(nèi)容為Acceptor之前緩存的最大選舉編號;否,回復拒絕消息;
(3)Accept request:Proposer接收到回復消息后,判斷回復消息的內(nèi)容是否為空:是,進入(4);否,終止當前選舉;
(4)Accept request:Proposer接收到全部回復消息后,判斷是否超過半數(shù)回復為接受:是,Proposer廣播選舉確認消息,內(nèi)容與選舉請求消息一致;否,隨機等待一段時間,提高選舉編號,重啟Propose過程;
(5)Accept response:Acceptor收到選舉確認消息后,將控制節(jié)點設置為Proposer的節(jié)點ID,清空緩存的選舉編號,返回確認消息。
(6)Accept response:Proposer判斷接收到的確認消息是否超過半數(shù):是,Proposer改變工作狀態(tài),成為新的控制節(jié)點,選舉結(jié)束;否,重啟選舉過程。
2.3.2 工作節(jié)點的自適應性
當工作節(jié)點數(shù)目發(fā)生變化時,控制節(jié)點會自動進行處理:
(1)新工作節(jié)點上線時,控制節(jié)點會計算應分配給新節(jié)點的子命名空間,并將分配信息和WBD 備份數(shù)據(jù)集發(fā)送給新節(jié)點,新節(jié)點通過這些數(shù)據(jù)重建WBD 工作數(shù)據(jù)集,并開始提供元數(shù)據(jù)服務。
(2)某工作節(jié)點宕機時,控制節(jié)點對當前命名空間的劃分情況進行評估,判斷是否需要對分布情況進行調(diào)整,并根據(jù)判斷結(jié)果進行相應操作。
2.3.3 命名空間的自適應性
控制節(jié)點會根據(jù)每個子命名空間對應的WBD 的數(shù)據(jù)量大小,對命名空間的劃分進行動態(tài)調(diào)整。
(1)當WBD 數(shù)據(jù)量過大,接近節(jié)點內(nèi)存上限時,控制節(jié)點會對該WBD 對應的子命名空間進行進一步的劃分,并通過WBD 的分裂操作將該WBD 分成兩個新的WBD,并重新分配到其它節(jié)點上進行管理。
(2)當WBD 數(shù)據(jù)量過小,導致WBD 個體數(shù)量過多時,控制節(jié)點會對多余的子命名空間進行合并,并使用WBD 的合并操作將該WBD 合并到同級WBD 中。
SAMS與HDFS Federation元數(shù)據(jù)模型的對比見表4。
表4 SAMS與HDFS Federation元數(shù)據(jù)模型的對比
本文首先在Linux環(huán)境下通過Java對WBD 進行了實現(xiàn),并以HDFS Federation(Hadoop 0.23.0)為基礎實現(xiàn)了一個SAMS原型系統(tǒng)。實現(xiàn)過程中,最大化的利用了HDFS原有代碼,包括命名空間劃分算法、備份數(shù)據(jù)集同步等算法和功能都通過HDFS原有代碼進行實現(xiàn)。原型系統(tǒng)部署在4個元數(shù)據(jù)節(jié)點,10個數(shù)據(jù)節(jié)點的實驗集群上,各節(jié)點通過千兆網(wǎng)卡連接,所采用的服務器硬件指標見表5。實驗中使用約800G各類數(shù)據(jù)存儲在HDFS中作為實驗數(shù)據(jù)。
表5 服務器硬件指標
本實驗對SAMS 的文件I/O 性能進行測試,通過與HDFS Federation和HDFS進行對比,分析SAMS 的I/O性能特征。實驗方法:采用LoadRunner模擬100用戶進行并發(fā)讀/寫操作,記錄平均響應時間。為了不相互干擾,讀寫實驗分開進行,讀/寫操作每次隨機讀?。瘜懭氪笮?00K 的數(shù)據(jù)塊。
圖5顯示了3種系統(tǒng)對讀/寫操作的平均響應時間,可以看到,3 種系統(tǒng)的文件讀取操作響應時間基本持平,SAMS的寫操作響應時間要略低于HDFS Federation 和HDFS約15ms,分析其原因在于:HDFS和HDFS Federation每完成一次元數(shù)據(jù)操作會將其記錄到editlog中,帶來一定的磁盤I/O;而在SAMS中,除了持久化,所有元數(shù)據(jù)操作均在內(nèi)存中完成,提高了元數(shù)據(jù)訪問效率。
圖5 I/O 操作響應時間對比
本實驗結(jié)果充分說明,WBD 能夠有效地降低分布式元數(shù)據(jù)管理帶來的額外性能開銷;并且,由于采用了全內(nèi)存的元數(shù)據(jù)管理,使整體文件I/O 性能得到了微小的提升。
3.2.1 元數(shù)據(jù)可用性實驗
本實驗測試節(jié)點宕機對SAMS 文件訪問的影響,以HDFS Federation為對比。實驗方法:通過shell腳本讓一臺元數(shù)據(jù)服務器在測試中自行斷開網(wǎng)絡,模擬服務器宕機的情況。在宕機前后,分別采用LoadRunner模擬10000次隨機讀取操作,記錄宕機前后文件讀取操作的成功次數(shù)。結(jié)果見表6,當HDFS Federation元數(shù)據(jù)節(jié)點宕機時,會導致部分文件無法訪問,而SAMS由于采用了多重冗余設計,單個元數(shù)據(jù)節(jié)點故障不影響文件的訪問。
表6 宕機前后讀操作成功率對比
3.2.2 宕機性能影響實驗
本實驗通過對比正常運行、工作節(jié)點宕機和3種控制節(jié)點宕機情況下元數(shù)據(jù)的查詢效率,測試節(jié)點宕機對SAMS元數(shù)據(jù)服務性能的影響。實驗方法:通過LoadRunner模擬100用戶并行執(zhí)行元數(shù)據(jù)隨機查詢,并通過shell腳本讓指定服務器在測試開始600 秒左右自行斷開網(wǎng)絡,輸出操作執(zhí)行的TPS曲線,分析丟失節(jié)點時SAMS元數(shù)據(jù)服務的性能變化。結(jié)果如圖6,在正常運行的狀態(tài)下,元數(shù)據(jù)查詢操作的TPS曲線快速上升并保持在27000左右;在工作節(jié)點宕機的對照組中,可以看到隨著控制節(jié)點宕機,元數(shù)據(jù)查詢操作TPS迅速下降到約16000,并最終穩(wěn)定在17000左右,原因在于工作節(jié)點的宕機,導致提供元數(shù)據(jù)服務的節(jié)點減少,服務性能下降;在控制節(jié)點宕機的對照組中,控制節(jié)點宕機后,經(jīng)過了一小段時間,元數(shù)據(jù)查詢操作TPS才快速下降到約15000,并同樣穩(wěn)定在17000左右,原因是當控制節(jié)點剛剛宕機時,對集群性能并無太大影響,但是當某個工作節(jié)點被選舉為新的控制節(jié)點后,服務節(jié)點減少,集群狀態(tài)與工作節(jié)點宕機后的集群狀態(tài)保持一致。
容錯性實驗表明,丟失節(jié)點雖然會造成一定的性能下降,但不會導致元數(shù)據(jù)服務的失敗,SAMS具有較好的容錯性,保證了元數(shù)據(jù)服務的高可用性。
本實驗通過增加新的元數(shù)據(jù)節(jié)點,測試SAMS的擴展能力。實驗方法:通過LoadRunner模擬100用戶并行執(zhí)行元數(shù)據(jù)隨機查詢,并從600s開始,每300s增加一個工作節(jié)點,總共增加3個,輸出操作執(zhí)行的TPS曲線,分析增加節(jié)點時SAMS元數(shù)據(jù)服務的性能變化。圖7展示了元數(shù)據(jù)隨機查詢操作的TPS曲線,在3次增加新節(jié)點后,SAMS性能都出現(xiàn)階梯狀增長,表明SAMS的性能與節(jié)點數(shù)量呈現(xiàn)出一定的線性關系,具有良好的橫向擴展性。
圖6 宕機實驗元數(shù)據(jù)查詢操作TPS
圖7 擴展實驗元數(shù)據(jù)查詢操作TPS
本文針對分布式文件系統(tǒng)元數(shù)據(jù)管理模型存在的不足,重點論述了WBD 的構(gòu)造、狀態(tài)和操作,設計并實現(xiàn)了一種分布式文件系統(tǒng)元數(shù)據(jù)管理模型SAMS。實驗分析表明,采用SAMS作為分布式文件系統(tǒng)的元數(shù)據(jù)管理模型,在維持元數(shù)據(jù)服務性能的基礎上,實現(xiàn)了高容錯性和高擴展性。下一步的研究重點是在更大規(guī)模的集群中測試WBD 和SAMS的性能特點,并對其進行優(yōu)化。
[1]WU Wei.Research on metadata management in large-scale storage system [D].Wuhan:Huazhong University of Science and Technology,2010 (in Chinese).[吳偉.海量存儲系統(tǒng)元數(shù)據(jù)管理的研究 [D].武漢:華中科技大學,2010.]
[2]LIU Aigui.Metadata service model for distributed file systems[EB/OL].[2011-09-05].http://blog.csdn.net/liuaigui/article/details/6749188.(in Chinese).[劉愛貴.分布式文件系統(tǒng)元數(shù)據(jù)服務模型[EB/OL].[2011-09-05].http://blog.csdn.net/liuaigui/article/details/6749188.]
[3]Wikipedia.Google file system[EB/OL].[2013-01-30].http://en.wi-kipedia.org/wiki/Google_File_System.
[4]The Apache Software Foundation.HDFS architecture guide[EB/OL].[2011-05-04].http://hadoop.apache.org/common/docs/current/hdfs_design.html.
[5]Oracle.Lustre internals documentation[EB/OL].[2010-04-06].http://wiki.lustre.org/lid/index.html.
[6]ZHAO Yuelong,XIE Xiaoling,CAI Yongcai,et al.A strategy of small file storage access with performance optimization[J].Journal of Computer Research and Development,2012,49 (7):1579-1586 (in Chinese).[趙躍龍,謝曉玲,蔡詠才,等.一種性能優(yōu)化的小文件存儲訪問策略的研究 [J].計算機研究與發(fā)展,2012,49 (7):1579-1586.]
[7]LIU Lian,ZHENG Biao,GONG Yili.Metadata processing optimization in distributed file systems[J].Journal of Computer Applications,2012,32(12):3271-3273(in Chinese).[劉戀,鄭彪,龔奕利.分布式文件系統(tǒng)中元數(shù)據(jù)操作的優(yōu)化[J].計算機應用,2012,32(12):3271-3273.]
[8]LIU Aigui.Research of the GlusterFS [EB/OL].[2011-09-05].http://blog.csdn.net/liuaigui/article/details/6284551.(in Chinese).[劉愛貴.GlusterFS集群文件系統(tǒng)研究[EB/OL].[2011-03-28].http://blog.csdn.net/liuaigui/article/details/6284551.]
[9]XUE Wei,ZHU Ming.Dynamic management system of distributed metadata [J].Computer Engineering,2012,38(4):63-66 (in Chinese).[薛偉,朱明.一種分布式元數(shù)據(jù)的動態(tài)管理系統(tǒng) [J].計算機工程,2012,38 (4):63-66.]
[10]CAI Tao,NIU Dejiao,LIU Yangkuan,et al.NVMMDS:Metadata management method based on non-volatile memory[J].Journal of Computer Research and Development,2013,50 (1):69-79 (in Chinese).[蔡濤,牛德姣,劉揚寬,等.NVMMDS——一種面向非易失存儲器的元數(shù)據(jù)管理方法[J].計算機研究與發(fā)展,2013,50 (1):69-79.]
[11]DONG Xicheng.Introduction of HDFS federation[EB/OL].[2011-12-01].http://dongxicheng.org/mapreduce/hdfs-federation-introduction/(in Chinese).[董西成.HDFS Federation設計動機與基本原理[EB/OL].[2011-12-01].http://dongxicheng.org/mapreduce/hdfs-federation-intro-duction/.]
[12]Zaharia M,Chowdhury M,Das T,et al.Resilient distributed datasets,a fault-tolerant abstraction for in-memory cluster computing [R].San Francisco:University of California at Berkeley,Technical Report No.UCB/EECS-2011-82,2011.