一種基于消息再生機制的圖計算容錯方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種基于消息再生機制的圖計算容錯方法及系統(tǒng)。該方法在圖計算過程中,對于圖結(jié)構(gòu)數(shù)據(jù)保存相鄰兩個快照之間圖結(jié)構(gòu)的變化信息,對于消息數(shù)據(jù)保存頂點值集合;當出現(xiàn)失效時,利用保存的所述圖結(jié)構(gòu)的變化信息和所述頂點值集合,將圖計算系統(tǒng)恢復到之前有效的快照對應的超步(Superstep),然后開始下一超步的計算。該系統(tǒng)包括一個控制節(jié)點、多個計算節(jié)點和分布式文件系統(tǒng)。為了能夠更好地適應圖計算系統(tǒng)的失效情況,本發(fā)明能夠?qū)崿F(xiàn)快照數(shù)據(jù)的輕量化,大大縮短快照的生成和恢復時間,提高圖計算系統(tǒng)的容錯能力。
【專利說明】一種基于消息再生機制的圖計算容錯方法及系統(tǒng)
【技術(shù)領域】
[0001]本發(fā)明屬于云計算領域,具體涉及一種用于圖計算系統(tǒng)的基于消息再生機制的高效容錯方法及系統(tǒng)。
【背景技術(shù)】
[0002]圖計算系統(tǒng)正在越來越廣泛地被各類企業(yè)運用于日常的數(shù)據(jù)分析和計算中。在開源界涌現(xiàn)出了許多開源的圖計算框架,如Apache Giraph、PowerGraph等。這些圖計算系統(tǒng)框架受到Pregel的啟發(fā),均采用了基于頂點的語義模型和BSP (Bulk SynchronousParallel)計算模型,從分布式存儲系統(tǒng)中讀入圖數(shù)據(jù),在內(nèi)存中進行迭代計算,最后將計算結(jié)果輸出到數(shù)據(jù)庫或文件系統(tǒng)中。
[0003]—個圖計算任務被劃分成若干個超步(Super step ),在每個超步中,每個頂點將處理來自鄰居頂點上一個Superstep發(fā)來的消息,并根據(jù)具體的運算邏輯向周圍頂點發(fā)送消息供下一個Superst印使用。這種基于消息的頂點間通訊機制使得該計算框架可以將頂點很容易地劃分在多個機器中,從而達到分布式和并行計算的目的。
[0004]作為一個分布式計算框架,容錯是非常必要的。傳統(tǒng)的MapReduce計算框架往往采用將子任務重算方法,這是因為每個計算任務的子任務具有如下特性:
[0005]1.子任務是沒有狀態(tài)的,所有計算所需數(shù)據(jù)都可以從文件系統(tǒng)中獲得;
[0006]2.子任務之間沒有任何依賴或通信。
[0007]而對于圖計算系統(tǒng)來說,這樣兩個特性并不存在:
[0008]1.子任務是有狀態(tài)的:圖的結(jié)構(gòu)數(shù)據(jù)和頂點狀態(tài)都保存在內(nèi)存中,且無法從文件系統(tǒng)中獲得;
[0009]2.子任務之間有大量的消息交換,每臺機器上的子任務緩存了來自其他機器上一個Superstep的消息數(shù)據(jù)。
[0010]這使得圖計算系統(tǒng)無法使用MapReduce的子任務重算方法。在現(xiàn)有的開源實現(xiàn)中,往往使用Checkpoint (快照)機制,即在每一個Superstep結(jié)束后,將圖的結(jié)構(gòu)數(shù)據(jù)、頂點狀態(tài)和本輪接收供下一個Superstep使用的消息整體保存到分布式文件系統(tǒng)上作為一個快照。當出現(xiàn)失效時,所有節(jié)點放棄當前的計算狀態(tài)和中間數(shù)據(jù),從文件系統(tǒng)中重新讀入最近一個快照。該方法雖然實現(xiàn)起來很簡單,但其網(wǎng)絡和磁盤開銷都非常大,嚴重拖慢計算速度,因此在實際應用中往往關(guān)閉此功能。
【發(fā)明內(nèi)容】
[0011]為了能夠更好地適應圖計算系統(tǒng)的失效情況,本發(fā)明提出一種用于圖計算系統(tǒng)的基于消息再生機制的高效容錯方法,及采用該方法的圖計算系統(tǒng),能夠?qū)崿F(xiàn)快照數(shù)據(jù)的輕量化,大大縮短快照的生成和恢復時間,提高圖計算系統(tǒng)的容錯能力。
[0012]為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
[0013]一種基于消息再生機制的圖計算容錯方法,其步驟包括:[0014]I)在圖計算過程中,對于圖結(jié)構(gòu)數(shù)據(jù)保存相鄰兩個快照之間圖結(jié)構(gòu)的變化信息,對于消息數(shù)據(jù)保存頂點值集合;
[0015]2)當出現(xiàn)失效時,利用保存的所述圖結(jié)構(gòu)的變化信息和所述頂點值集合,將圖計算系統(tǒng)恢復到之前有效的快照對應的超步(Superstep),然后開始下一超步的計算。
[0016]進一步地,步驟2)所述之前有效的快照為失效之前任意一個有效的快照,優(yōu)選為失效之前最后一個有效的快照。
[0017]進一步地,步驟I)在Superstep k結(jié)束時的快照生成過程如下:
[0018]a)儲存相對于上一個快照的圖變化信息Alri,k ;
[0019]b)儲存所有頂點的值,形成頂點值集合Vk。
[0020]進一步地,設Auj為第j個Superstep相對于第i個Superstep的變化增量,Gk為恢復到第k個Superst印時所需要讀取的圖結(jié)構(gòu)數(shù)據(jù)快照,則步驟2)中當出現(xiàn)失效時恢復到Superstep k時的狀態(tài)的過程如下:
[0021]a)依次讀取 G Λ μ Λ"...Λ k_2, H,獲得 Glrl ;
[0022]b)讀取頂點值集合Vk,根據(jù)Vk恢復出消息集合Mk ;
[0023]c)讀取 Λ H,,,形成 Glri Λη,, = Gk。
[0024]一種采用上述方法的圖計算系統(tǒng),包括一個控制節(jié)點、多個計算節(jié)點和分布式文件系統(tǒng),其中,控制節(jié)點負責向計算節(jié)點分發(fā)計算任務,在計算節(jié)點間同步,探測計算節(jié)點的失效情況,同時控制計算過程的進行;計算節(jié)點負責具體任務的計算工作,每個計算節(jié)點的內(nèi)存中保存一個圖的部分頂點及其與其他頂點的聯(lián)接情況;分布式文件系統(tǒng)負責存儲圖的靜態(tài)信息和運行過程中的快照數(shù)據(jù),包括相鄰兩個快照之間圖結(jié)構(gòu)的變化信息和消息數(shù)據(jù)的頂點值集合;當控制節(jié)點探測到計算節(jié)點失效時,控制計算節(jié)點恢復到之前有效的狀態(tài)。
[0025]本發(fā)明的基于消息再生機制的圖計算容錯方法,通過基于圖結(jié)構(gòu)數(shù)據(jù)增量快照和消息數(shù)據(jù)再生機制,實現(xiàn)了一種輕量級快照及其恢復方法,大大減少了快照生成和恢復時所需的數(shù)據(jù)量,從而降低了網(wǎng)絡帶寬和磁盤要求,提高了故障恢復效率,是一個精確、細致的方法,實現(xiàn)復雜度低,易于維護,具有較高的實用價值。
【專利附圖】
【附圖說明】
[0026]圖1是PageRank算法實現(xiàn)及其regenerate函數(shù)圖。
[0027]圖2是SSSP算法實現(xiàn)及其regenerate函數(shù)圖。
[0028]圖3是圖計算系統(tǒng)結(jié)構(gòu)示意圖。
[0029]圖4是Giraph系統(tǒng)和本發(fā)明系統(tǒng)的計算和快照時間對比圖。
[0030]圖5是Giraph系統(tǒng)和本發(fā)明系統(tǒng)的Κ-Core任務的Checkpoint大小對比圖。
[0031]圖6是Giraph系統(tǒng)和本發(fā)明系統(tǒng)的PageRank恢復時間對比圖。
【具體實施方式】
[0032]下面通過具體實施例和附圖,對本發(fā)明做進一步說明。
[0033]傳統(tǒng)的快照數(shù)據(jù)包括兩部分:a)圖結(jié)構(gòu)數(shù)據(jù)快照;b)緩存的供下一個Superst印使用的消息數(shù)據(jù)快照。本發(fā)明分別通過兩種不同的方法減小這兩部分的數(shù)據(jù)體積,通過圖結(jié)構(gòu)數(shù)據(jù)增量快照和消息數(shù)據(jù)再生機制,實現(xiàn)快照數(shù)據(jù)的輕量化,達到快速生成和恢復的目的,大大縮短了快照的生成和恢復時間。
[0034]1.增量圖結(jié)構(gòu)數(shù)據(jù)快照
[0035]對于圖結(jié)構(gòu)數(shù)據(jù),相對于傳統(tǒng)的快照全部圖結(jié)構(gòu)數(shù)據(jù)的方法,本發(fā)明使用增量式快照,即采用基于日志追加的方法保存兩個快照之間圖結(jié)構(gòu)的變化。形式化地,設八“為第i個Superstep相對于第i個Superstep的變化增量,則第k個Superstep結(jié)束時保存的數(shù)據(jù)為如果需要恢復到第X個Superstep,其所需要讀取的圖結(jié)構(gòu)數(shù)據(jù)快照為:
[0036]Gx = GAoa Δ 1>2...Δ ,其中Gx表示第x個超步結(jié)束時的圖結(jié)構(gòu)數(shù)據(jù),G表示原始圖結(jié)構(gòu)數(shù)據(jù)。
[0037]2.基于消息數(shù)據(jù)再生機制的消息快照
[0038]設Superstepk產(chǎn)生的消息集合為Mk,所有頂點值集合為Vk。對于消息數(shù)據(jù),相對于傳統(tǒng)的保存全部Mk的方法,本發(fā)明只保存頂點值集\,恢復時則通過頂點值直接恢復出該節(jié)點在該Superstep發(fā)送的消息。
[0039]設每個頂點的平均度數(shù)為β,則Vk的快照大小為Mk的I/ β。由于計算模型不同,本發(fā)明增強了計算模型語義,向上層應用暴露恢復接口,由程序員自行確定如何通過頂點的值恢復出該Superstep發(fā)送的消息。其典型的程序接口為:
[0040]void regenerate (T value),其中 T value 是當前頂點在 Superstep k 結(jié)束時的值。
[0041]在恢復過程中,系統(tǒng)會對每個頂點調(diào)用regenerate函數(shù),恢復出從該頂點發(fā)出的消息。經(jīng)過測試,絕大部分運行于圖計算平臺上的算法都適用于此接口。作為實例,圖1和圖2分別給出了兩個典型算法Pag`eRank和SSSP (單源最短路徑)的算法實現(xiàn)及其相應的regenerate 函數(shù)。
[0042]3.快照過程
[0043]在Superstep k結(jié)束時,其快照生成過程如下:
[0044]a)儲存相對于上一個快照的圖變化信息;
[0045]b)儲存所有頂點的值,形成Vk。
[0046]4.恢復過程
[0047]當出現(xiàn)失效時,若想恢復到Superstep k時的狀態(tài),貝U過程如下:
[0048]a)依次讀取 GAoaA 1>2...Δ 卜出,獲得 Gk^1
[0049]b)讀取Vk,根據(jù)Vk對于每個頂點調(diào)用regenerate函數(shù),恢復出Mk ;
[0050]c)讀取 Ak-1k,形成 Glrf Ak-1k = Gk。
[0051]通過以上步驟,可以將圖計算系統(tǒng)的狀態(tài)恢復到Superstepk,此時恢復過程完成,可以開始下一步計算。
[0052]以下詳細介紹針對本發(fā)明方法所進行的實驗。該實驗完整地實現(xiàn)了圖計算系統(tǒng)及前文所述的快照和恢復方法,并使用真實圖數(shù)據(jù)和常見圖算法作為任務負載,模擬系統(tǒng)失效的情形,并與傳統(tǒng)快照恢復方法比較,以此測量該方法的性能和有效性。
[0053]1.實施步驟
[0054]I)首先實現(xiàn)所需的計算系統(tǒng)框架,其系統(tǒng)結(jié)構(gòu)如圖3所示:
[0055]該系統(tǒng)包含一個控制節(jié)點和多個計算節(jié)點。其中,控制節(jié)點負責向計算節(jié)點分發(fā)計算任務,在計算節(jié)點間同步,探測計算節(jié)點的失效情況,同時控制計算過程的進行;計算節(jié)點則負責具體任務的計算工作,每個計算節(jié)點的內(nèi)存中保存了一個圖的部分頂點及其與其他頂點的聯(lián)接情況。節(jié)點間使用與Giraph類似的Apache MINA通信框架進行消息通信。分布式文件系統(tǒng)則負責存儲圖的靜態(tài)信息和運行過程中的快照數(shù)據(jù)。
[0056]2)啟動系統(tǒng),并向系統(tǒng)分配計算任務,計算節(jié)點將圖結(jié)構(gòu)數(shù)據(jù)從分布式文件系統(tǒng)中讀入,并在控制節(jié)點的協(xié)調(diào)下開始計算。每個Superstep結(jié)束后,計算節(jié)點將把快照數(shù)據(jù)持久化到分布式文件系統(tǒng)中。
[0057]3)當控制節(jié)點探測到計算節(jié)點失效時,會控制計算節(jié)點進行如下操作:
[0058]a)終止當前Superstep的計算,進行資源清理,進入恢復模式;
[0059]b)尋找最后一個有效的快照k,并從文件系統(tǒng)中讀入Glri ;
[0060]c)讀取Vk,對圖上每一個頂點調(diào)用regenerate函數(shù)恢復出Mk,在不同計算節(jié)點間消息交換;
[0061 ] d)讀取 Λ η, k,形成 Glri Δ ^lj k = Gk ;
[0062]e)退出恢復模式,開始Superstep k+1的計算。
[0063]2.實施效果
[0064]針對該算法進行實驗,實驗使用16臺服務器,每臺服務器配置為12核AMD0pteron4180和48G內(nèi)存,用千兆網(wǎng)絡相連。實驗所用的圖數(shù)據(jù)為某社交網(wǎng)絡2009年的局部關(guān)系數(shù)據(jù),共2500萬頂點,約15億條邊,平均度數(shù)約為60。為了兼容性的考慮,底層的分布式文件系統(tǒng)采用HDFS1.1.0,并使用當前流行的Apache Giraphl.0.0作為性能對照。
[0065]實驗采用5個圖計算領域的典`型算法做為負載:RandomWalk,SSSP, WCC, K-Core和PageRank,并根據(jù)本方法的需求針對每個算法實現(xiàn)了相應的regenerate函數(shù)。所有系統(tǒng)和算法均使用Javal.7實現(xiàn)。
[0066]圖4展示了 Giraph系統(tǒng)和本發(fā)明的實驗系統(tǒng)在幾個典型任務下的計算和Checkpoint時間。由于數(shù)據(jù)集和算法實現(xiàn)基本相同,兩個系統(tǒng)的計算時間基本一致,但由于本方法中輕量快照的加入,使得實驗系統(tǒng)的快照創(chuàng)建時間大大縮短,整體運行時間加快。
[0067]圖5展示了 Giraph系統(tǒng)和本發(fā)明的實驗系統(tǒng)在運行K-Core任務時快照文件伴隨任務運行的累積大小,其中Giraph系統(tǒng)每5個Superstep進行一次快照,而本發(fā)明的試驗系統(tǒng)每個Superstep均進行一次快照。可以看到輕量快照的文件體積遠遠小于傳統(tǒng)快照體積。
[0068]在恢復時間上,使用PageRank作為典型負載進行實驗,并人為在第9個Superstep引入了失效,如圖6所示,可以看出得益于消息數(shù)據(jù)的再生機制,本發(fā)明的實驗系統(tǒng)故障后需要讀入的數(shù)據(jù)量較小,恢復速度要遠快于Giraph系統(tǒng)。
[0069]以上實施例僅用以說明本發(fā)明的技術(shù)方案而非對其進行限制,本領域的普通技術(shù)人員可以對本發(fā)明的技術(shù)方案進行修改或者等同替換,而不脫離本發(fā)明的精神和范圍,本發(fā)明的保護范圍應以權(quán)利要求所述為準。
【權(quán)利要求】
1.一種基于消息再生機制的圖計算容錯方法,其步驟包括: 1)在圖計算過程中,對于圖結(jié)構(gòu)數(shù)據(jù)保存相鄰兩個快照之間圖結(jié)構(gòu)的變化信息,對于消息數(shù)據(jù)保存頂點值集合; 2)當出現(xiàn)失效時,利用保存的所述圖結(jié)構(gòu)的變化信息和所述頂點值集合,將圖計算系統(tǒng)恢復到之前有效的快照對應的超步,然后開始下一超步的計算。
2.如權(quán)利要求1所述的方法,其特征在于:步驟2)所述之前有效的快照為失效之前最后一個有效的快照。
3.如權(quán)利要求1所述的方法,其特征在于,步驟I)在第k個超步結(jié)束時的快照生成過程如下: a)儲存相對于上一個快照的圖變化信息A1^k; b)儲存所有頂點的值,形成頂點值集合Vk。
4.如權(quán)利要求3所述的方法,其特征在于,設為第j個超步相對于第i個超步的變化增量,G表示原始圖結(jié)構(gòu)數(shù)據(jù),Gk為表示第k個超步結(jié)束時的圖結(jié)構(gòu)數(shù)據(jù),則步驟2)中當出現(xiàn)失效時恢復到第k個超步時的狀態(tài)的過程如下: a)依次讀取G Λ Λ lj2...Δ km,獲得 Glri ; b)讀取頂點值集合根據(jù)Vk恢復出消息集合Mk;
c)讀取八,_1,,,形成61;_1八1;_1,1;= 61;。
5.如權(quán)利要求4所述的方法,其特征在于,步驟b)根據(jù)Vk恢復出消息集合Mk所采用的程序接口為:void regenerate (T value),其中T value是當前頂點在Superstep k結(jié)束時的值。
6.一種采用權(quán)利要求1所述方法的圖計算系統(tǒng),其特征在于,包括一個控制節(jié)點、多個計算節(jié)點和分布式文件系統(tǒng),其中,控制節(jié)點負責向計算節(jié)點分發(fā)計算任務,在計算節(jié)點間同步,探測計算節(jié)點的失效情況,同時控制計算過程的進行;計算節(jié)點負責具體任務的計算工作,每個計算節(jié)點的內(nèi)存中保存一個圖的部分頂點及其與其他頂點的聯(lián)接情況;分布式文件系統(tǒng)負責存儲圖的靜態(tài)信息和運行過程中的快照數(shù)據(jù),包括相鄰兩個快照之間圖結(jié)構(gòu)的變化信息和消息數(shù)據(jù)的頂點值集合;當控制節(jié)點探測到計算節(jié)點失效時,控制計算節(jié)點恢復到之前有效的狀態(tài)。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于:當控制節(jié)點探測到計算節(jié)點失效時,控制計算節(jié)點進行如下操作: a)終止當前超步的計算,進行資源清理,進入恢復模式; b)尋找失效之前有效的快照k,并從文件系統(tǒng)中讀入Glri; c)讀取Vk,根據(jù)Vk恢復出Mk,在不同計算節(jié)點間消息交換;
d)讀取Δ H,k,形成 Glri Ak_ljk = Gk ; e)退出恢復模式,開始第k+Ι個超步的計算。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于:步驟b)所述失效之前有效的快照k為失效之前最后一個有效的快照。
9.如權(quán)利要求6所述 的系 統(tǒng),其特征在于:各節(jié)點間使用ApacheMINA通信框架進行消息通/[目O
【文檔編號】G06F11/14GK103885856SQ201410085478
【公開日】2014年6月25日 申請日期:2014年3月10日 優(yōu)先權(quán)日:2014年3月10日
【發(fā)明者】薛繼龍, 曲直, 楊智, 代亞非 申請人:北京大學