杜玉潔 王志剛 王 寧,2 劉芯亦 衣軍成 聶 婕 魏志強 谷 峪 于 戈
1(中國海洋大學計算機科學與技術學院 山東青島 266100)
2(密碼技術與信息安全教育部重點實驗室(山東大學)山東青島 266237)
3(青島市大數(shù)據(jù)中心 山東青島 266071)
4(東北大學計算機科學與工程學院 沈陽 110819)
作為計算機科學中一種重要的數(shù)據(jù)結構,圖可以表示現(xiàn)實世界中各種元素間復雜的關系,例如互聯(lián)網(wǎng)中的社交網(wǎng)絡、生物學中的蛋白質(zhì)網(wǎng)絡等.隨著大數(shù)據(jù)時代的到來,圖數(shù)據(jù)的規(guī)模呈爆炸式增長,截至2021 年1 月,F(xiàn)acebook 的月活躍用戶已超過28 億[1],而用戶之間復雜的社交關系導致邊的規(guī)模更為龐大,這需要分布式處理框架提供可擴展的存儲和計算能力[2].然而,圖數(shù)據(jù)的各種應用分析通常需要進行高頻迭代以逐步逼近最優(yōu)解,而迭代過程中需要以消息的形式交換頂點之間的中間計算結果.由于頂點可能分布于不同的分布式任務,這會產(chǎn)生大量的通信開銷.
常見的圖應用分析既包括網(wǎng)頁排名計算Page-Rank 和單源最短路徑(single-source shortest path,SSSP)等簡單算法,又包括社團分類SC(semi-cluster)[2]和復雜的多源最短路徑計算(multi-source shortest path,MSSP)[3]等復雜算法.其一條消息的結構均包括目的頂點標識符以及消息值,但簡單算法的消息值僅需一個基本數(shù)據(jù)類型即可表達,即單維消息值,如以浮點型數(shù)據(jù)表示PageRank 的網(wǎng)頁排名分數(shù)或SSSP 的最短距離值;復雜算法則需要若干基本數(shù)據(jù)類型聯(lián)合表達,即多維消息值,如以浮點型數(shù)組來表示MSSP中若干源頂點的最短距離值,以整型數(shù)集合表示SC中一個聚類內(nèi)包含的實體等.面對海量圖數(shù)據(jù)的迭代處理作業(yè),多維算法顯然會急劇增加消息通信開銷,嚴重制約分布式計算的性能收益.
為提高計算和存儲的可擴展性,大量分布式圖計算平臺已經(jīng)被開發(fā)出來并從通用性、易用性、健壯性和性能提升等各個方面進行了優(yōu)化、完善.其中關于通信優(yōu)化的技術主要包括圖劃分[2,4-6]以及給定劃分后的消息合并[2]與頂點備份機制[7].圖劃分作為一個NP 完全問題[8],難以在降低通信開銷的解耦合和環(huán)節(jié)水桶效應的負載均衡方面實現(xiàn)綜合最優(yōu).因此,如何在給定劃分結果的前提下進行通信優(yōu)化,顯得格外重要.
現(xiàn)有分布式圖計算系統(tǒng)中的消息管理框架主要分為早期Pregel[2]與GPS[7]等系統(tǒng)采用的主動推送機制(push)和PowerGraph[9]以及HGraph[10]等系統(tǒng)采用的新型按需拉取機制(pull).已有的消息合并和頂點備份以及融合改進技術[11]均在push 框架下完成.然而由于消息的目的頂點分布的局部性差,push 框架從機制上無法保證應合并消息被完全合并,嚴重制約實際性能收益;反之,pull 框架極大改善了局部性,能夠保證應合并消息被完全合并,可最大化消息合并收益.本文分析發(fā)現(xiàn),對于PageRank 類算法,pull框架下的消息合并與頂點備份,在理論上可產(chǎn)生相同的性能收益.然而,對于多維消息算法,如MSSP,即使對某個源頂點相關的單維度消息進行了完全合并,不同源頂點所構成的多維消息值依然較大;而對于SC 等算法,受計算邏輯正確性約束,僅能合并消息的目的頂點標識符而不可合并消息值.因此,需在pull 框架下實現(xiàn)頂點備份機制,在保留非備份頂點消息合并(或僅合并目的頂點標識符)收益的前提下,通過頂點備份進一步優(yōu)化通信性能.
然而,現(xiàn)有頂點備份方法均在push 框架下開發(fā)完成,其備份頂點值的同步策略依然采用push 方式,如果直接遷移到pull 框架下,會導致同一個迭代步中同時存在push 與pull 這2 種消息管理體制,破壞原有pull 框架的系統(tǒng)完整性與優(yōu)化設計,比如高效的容錯管理以及較低的內(nèi)存資源消耗等特性.此外,備份機制雖然可帶來通信收益,但會導致邊數(shù)據(jù)在不同分布式任務之間進行遷移,影響原圖劃分結果的負載均衡,加重分布式環(huán)境下水桶效應導致的延遲開銷.因此如何選擇一個較好的備份控制閾值,對于獲取最優(yōu)的綜合性能至關重要.此外,對于MSSP類支持合并的算法,遷移邊會破壞消息合并所依賴的圖結構,降低合并收益,如何在合并收益與備份收益之間進行均衡,是另外一個巨大挑戰(zhàn).
圍繞多維消息算法的通信優(yōu)化問題,本文針對平衡合并收益與備份收益的挑戰(zhàn),在新型pull 框架[10]下設計了輕量級頂點備份機制,采用按需同步備份頂點值和優(yōu)先級拉取消息等策略,使頂點備份與pull 框架完美兼容;設計代價收益模型以均衡通信收益與偏斜延遲的影響,可根據(jù)數(shù)據(jù)集相關的線下先驗知識和應用算法相關的線上實時信息,自動計算最優(yōu)備份閾值,強化備份機制的實際性能收益并避免繁瑣的手工閾值測試與選擇操作;針對MSSP 類可合并多維算法,從合并收益與備份收益2 個角度分析多源點并發(fā)數(shù)目的取值,以確保備份機制的性能收益.大量真實數(shù)據(jù)集上的實驗結果表明,傳統(tǒng)push備份機制的內(nèi)存開銷均大于較本文提出的輕量級備份框架,最高可達15 倍;對比現(xiàn)有非備份的pull 框架,本文框架可實現(xiàn)高達53%的性能收益;而代價分析模型則可有效選擇較優(yōu)的備份閾值,實現(xiàn)與手動調(diào)整相近的性能收益.
通信開銷一直是制約分布式圖處理性能提升的關鍵因素.本節(jié)總結了當前主要的相關工作并闡述本文技術與它們的區(qū)別.
1)圖劃分優(yōu)化.高質(zhì)量的圖劃分算法旨在解耦圖數(shù)據(jù)以減少子圖間的關聯(lián)關系,進而減少通信開銷,同時確保各任務的負載均衡以減少并行計算的水桶效應[12].然而,圖劃分問題屬于NP 完全問題[8].簡單的Hash[2]和Range[10]劃分可分別保證頂點和邊數(shù)據(jù)的均衡分配,雖然頂點或邊的切割會引起較高的通信開銷,但由于劃分速度快,已成為當前主流的劃分機制.此外,多級層次劃分算法如Metis[6],PaToH[13],KaHIP[14]等通過反復迭代調(diào)整數(shù)據(jù)分配位置,可顯著降低通信開銷,但執(zhí)行效率過低.而流式劃分[5]嘗試均衡通信優(yōu)化質(zhì)量和劃分執(zhí)行效率.本文的通信優(yōu)化機制是針對給定劃分后的子圖進行2 次優(yōu)化,因此兼容上述圖劃分技術.
2)消息傳遞優(yōu)化.除圖劃分外,在迭代計算過程中也存在很多通信優(yōu)化技術.谷歌的Pregel 系統(tǒng)[2]首先針對多對1 結構提出消息合并策略.Pregel 的開源實現(xiàn)GPS 系統(tǒng)[7]則提出LALP 策略,對高出度頂點進行邊遷移并備份源頂點;而以此為基礎,進一步的工作探討了如何在備份遷移過程中保證負載均衡[14-16].Pregel+[11]在消息合并基礎上融合LALP,并增加邊遷移(即源頂點備份)閾值的討論,以在合并與備份之間進行均衡.然而,上述系統(tǒng)均采用push 機制,這是由于目的頂點分布的局部性差,消息合并收益較低.不 同于push 框 架,PowerGraph[9],CGraph[17],HDRF[18]等框架在數(shù)據(jù)加載過程采用頂點分割策略,并設計了對應的GAS(gather-apply-scatter)迭代計算框架,可同時支持圖算法和機器學習算法,其中Gather 即pull機制的核心部件.然而,頂點切分引入大量內(nèi)存開銷[19],且GAS 計算頻繁觸發(fā)頂點之間的同步操作,開銷較大.為此,PowerLyra[20],GrapH[21],L-PowerGraph[22],LightGraph[23]等分別從頂點切分策略與頂點間消息傳遞方面進行優(yōu)化.最近提出的HGraph 系統(tǒng)[10]則給出了以塊為單位進行消息拉取的新型pull 框架,顯著改善了消息目的頂點分布的局部性,可實現(xiàn)完全徹底的消息合并,在不進行頂點切分的前提下,針對值合并類算法,其性能顯著優(yōu)于傳統(tǒng)pull 框架且在內(nèi)存消耗與容錯控制方面均有較大優(yōu)勢.然而,多維算法由于其消息值本身的字節(jié)規(guī)模較大,使得HGraph 在徹底合并消息(值或目的頂點ID)后,通信代價仍然較高,亟需通過頂點備份進一步降低相關開銷.
近年來,基于特定硬件架構的圖計算優(yōu)化問題已經(jīng)成為另一個研究熱點[19,24],但本文關注通用架構下的通信優(yōu)化,不對硬件條件進行特定假設.
本節(jié)首先闡述分布式圖迭代計算的一般處理方式;然后根據(jù)消息數(shù)據(jù)的維度以及合并屬性對圖迭代算法進行分類,并著重介紹近些年提出的具有重要實用價值的多維消息類算法;最后基于推送(push)和拉?。╬ull)這2種主流分布式消息管理框架,分析合并與備份對不同類型圖算法的優(yōu)化效果.
給定輸入的有向圖G=〈V,E〉,其中V為|V|個頂點的集合而E為|E|條邊的集合.E中每條有向邊e=〈vi,vj〉連接源頂點vi和目的頂點vj,其中vi是vj的入度鄰居/頂點,而vj是vi的出度鄰居/頂點.圖以鄰接表形式存儲,每條鄰接表包含頂點vi和所有以vi為源頂點的出邊的目的頂點.
分布式圖迭代計算系統(tǒng)在啟動迭代計算之前,首先將G從初始存儲位置(如分布式文件存儲系統(tǒng)HDFS)并行加載到P個不同的分布式計算任務Ti上,每個任務負責處理一部分數(shù)據(jù),即子圖Gi=〈Vi,Ei〉,該過程即圖劃分;隨后各任務Ti對本地子圖Gi中的圖數(shù)據(jù)進行迭代計算,計算過程中消息的生成、發(fā)送和接收處理都是按照出邊進行的,相應頂點循環(huán)執(zhí)行更新操作,每次循環(huán)即一個迭代步,迭代步之間通過全局同步路障來協(xié)調(diào)各個任務的處理進度.第k個迭代步的具體操作包括:根據(jù)第k-1 步接收的消息更新頂點值,將更新后的頂點值以消息的形式沿著出邊發(fā)送給目的頂點,以便在第k+1 步執(zhí)行更新操作.如果頂點vi參加第k步迭代的更新計算,則稱vi在該迭代步是激活的,編程人員可根據(jù)需要設置激活標記,以避免非激活頂點的無效計算.當所有頂點均處于非激活狀態(tài)且系統(tǒng)中沒有新的消息生成時,算法收斂,迭代計算結束.
依據(jù)分布式圖算法在迭代計算過程中傳遞消息的不同維度特征和合并屬性,可對分布式圖算法進行分類.具體分類標準包括:1)一條消息數(shù)據(jù)的消息值可以由單個基本數(shù)據(jù)類型獨自表達或多個基本數(shù)據(jù)類型聯(lián)合表達,即單維與多維;2)發(fā)往同一個目的頂點的不同消息值是否允許被合并為一個值,即值合并和連接.表1 展示了常見分布式圖算法的分類結果.下面以SSSP、標簽廣播算法(label propagation algorithm,LPA)、MSSP 和SC 為例,分別按照2 種分類標準對不同類型算法的特征進行闡述.
Table 1 Graph Algorithm Classification表1 圖算法分類
SSSP 算法的目標是發(fā)現(xiàn)給定源頂點到圖中其他所有頂點之間的最短距離.迭代初始階段,源頂點將頂點值(即距離值)初始化為0 并根據(jù)出邊的距離權重生成消息值發(fā)送給出度頂點,而其余所有頂點均將頂點值設置為無窮大.隨后,每步迭代過程中,收到上一步消息的頂點被激活并從入度鄰居的消息值和自身頂點值中選擇最小的值進行值更新,而如果頂點值發(fā)生了更新,則沿出邊生成新消息并發(fā)送給出度鄰居.每條消息msg=〈ID,msgValue〉,其結構僅包括一個int 型的目的頂點ID和double 型距離值msgValue,屬單維消息.此外,算法邏輯僅關心最短距離值,所以如果沿2 條或多條目的頂點相同的出邊如e13=〈v1,v3〉和e23=〈v2,v3〉,分別生成具有不同消息值的消息如msg13=〈3,0.1〉和msg23=〈3,0.5〉,則可合并為一條消息msg=〈3,min{0.1,0.5}=0.1〉以節(jié)省通信開銷.
LPA 是一種快速社團發(fā)現(xiàn)算法,其將每個頂點賦值一個社團標簽并初始化為頂點ID,隨后迭代更新標簽值為其入度鄰居標簽值中出現(xiàn)次數(shù)最多者.由于頂點更新依賴所有入度鄰居的標簽值分布,所以每步迭代中每個頂點均參與更新且沿出邊向所有出度鄰居廣播自己的標簽值,即全激活.與SSSP 相比,其消息結構相同,即目的頂點ID和int 型的標簽值,屬于單維消息;但不同之處是,由于需要根據(jù)標簽頻數(shù)分布進行更新,所有消息值不可合并,僅可連接,即如有msg13=〈3,2〉和msg23=〈3,2〉,僅可連接消息值為msg=〈3,[2,2]〉以合并(共享)目的頂點ID進而節(jié)省通信開銷.
MSSP 是SSSP 的一種常見多源點擴展.高級圖挖掘與分析算法通常需要衡量圖中所有頂點對之間的最短距離,而通過串行提交不同源頂點的SSSP 作業(yè),會造成圖的反復遍歷,效率低下.一種高效的解決方案是根據(jù)集群的計算與存儲能力,在一個圖遍歷作業(yè)內(nèi)并發(fā)計算多個源頂點的最短距離分布,即MSSP.假設并發(fā)源頂點個數(shù)為m,則此時每個頂點值由一個double 型數(shù)據(jù)擴展為長度為m的double 數(shù)組;對應地,消息值也擴展為double 數(shù)組.例如,當m=3時,可有msg13=〈3,[0.1,0.4,0.2]〉和msg23=〈3,[0.5,0.3,0.1]〉,此時雖然對應源頂點的消息值可合并,但合并后的消息值仍是一個長度為3 的數(shù)組,即msg=〈3,[0.1,0.3,0.1]〉,故屬于可合并、多維消息類算法.其他單源點遍歷算法如PPR 和BFS 均有類似的多源擴展.
SC 是谷歌開源圖處理系統(tǒng)Pregel 中內(nèi)置的一種半聚類算法,即允許一個頂點記錄自己所屬的多個聚類并打分排序.迭代初始,每個頂點將自身初始化為一個聚類并發(fā)送給出度鄰居.在每個迭代步,所有頂點均激活,根據(jù)入度鄰居所屬的聚類分布更新自己所屬聚類,并繼續(xù)廣播.算法傳播的消息是描述頂點所在的聚類(即頂點集合),需要多個基本數(shù)據(jù)類型進行聯(lián)合表達,屬于多維消息結構;且由于需要聚類分布信息,故消息值不可合并.延續(xù)上例,可有消息msg13=〈3,(1)|0.6,(2,5)|0.3〉和msg23=〈3,(2,5)|0.3〉,即頂點v1可歸屬于包含頂點v1的聚類(1)和包含頂點v2與v5的聚類(2,5),分數(shù)分別為0.6 和0.3,而v2則以0.3 的分數(shù)歸屬于聚類(2,5).與LPA 類似,2 條消息因?qū)哪康捻旤c相同故可以合并發(fā)送,但消息值僅可連接,即以msg=〈3,[(1)|0.6,(2,5)|0.3,(2,5)|0.3]〉的形式進行發(fā)送.
綜上,對于單維值可合并類算法,如果可以保證應合并的消息被全部合并,可極大緩解通信壓力;對單維值連接類算法,由于消息值不可合并,每個迭代步中總的消息值規(guī)模最多可達到出邊的數(shù)量級,即|E|,但由于每個消息值的字節(jié)數(shù)較少,故通信壓力仍可以接受;反之,對于多維消息類算法,其單條消息值的規(guī)模取決于聯(lián)合表達所用的基本數(shù)據(jù)類型的數(shù)目,即維度,如MSSP 算法中的并發(fā)源頂點數(shù)目和SC 算法中描述聚類特征的基本數(shù)據(jù)類型集合規(guī)模.在相同的輸入圖規(guī)模下,多維算法顯然會產(chǎn)生較大的通信壓力.而當消息值不可合并時,通信代價更會急劇增大.而根據(jù)已有測試結果,在分布式圖算法處理過程中,即使對于單維消息類算法,任務間通信引入的時間開銷約占總執(zhí)行時間的50%以上[3].因此亟需針對多維消息圖迭代算法設計通信優(yōu)化技術,以提升分布式計算效益.
分布式通信問題可以通過提升圖劃分質(zhì)量加以改善,即在保證負載均衡的前提下盡量減少子圖之間的邊耦合依賴程度.然而,圖劃分是一個傳統(tǒng)的NP 完全問題[8],難以在合理時間內(nèi)獲得高質(zhì)量劃分結果.因此,對已有劃分后的子圖進行后續(xù)通信優(yōu)化就顯得尤為重要.目前的優(yōu)化方法主要分為2 類:消息合并和頂點備份.下面結合push 和pull 這2 種消息傳輸方式分析2 種優(yōu)化方法產(chǎn)生的效益,以突出本文研究的必要性.
2.3.1 push 與pull 消息傳輸方式對比
迭代過程中消息的生成與傳送方式可分為兩大類設計,分別為push 和pull.在迭代步k,push 在頂點更新時直接遍歷所有出邊并主動推送消息給所有目的頂點;而pull 僅完成頂點更新、不發(fā)送消息.在迭代步k+1,push 可確保目的頂點所需消息均已接收并儲備在本地,可直接使用;而pull 需要根據(jù)邊的依賴關系從對應源頂點處按需拉取消息數(shù)據(jù).2 種消息管理框架各有優(yōu)缺點,push 在一個迭代步中,僅需遍歷一次頂點即可完成頂點值更新和新消息生成,但由于頂點之間邊關系的自由分布,一個頂點的出邊所指向的目的頂點的分布具有較差的局部性,即主動推送的消息數(shù)據(jù)所指向的目的頂點的局部性差,且該部分消息直到下一個迭代步才被使用,因此需要在發(fā)送端和接收端設置大量消息管理緩存,需較多的內(nèi)存資源;pull 由于消息按需生成且消息均指向欲更新頂點值的目的頂點,故局部性良好,且接收的消息可直接被目的頂點處理,無需緩存,極大節(jié)省了內(nèi)存資源,但不同目的頂點的更新會導致其共享的源頂點被隨機掃描讀取多次.
2.3.2 消息合并
當某個任務上的多個源頂點均需要向同一個目的頂點發(fā)送消息時(多對1 結構),如果消息值可合并,顯然可以在消息發(fā)送之前進行合并(如2.2 節(jié)的SSSP 算法),以減少通信開銷.然而,在push 方式下,考慮到消息的目的頂點分布的局部性較差而發(fā)送端緩存又是有限的,因此能夠在緩存中參與合并的消息比例較少,即無法保證徹底的消息合并,導致通信收益降低,甚至難以抵消合并所引入的管理開銷.如圖1(a)所示,假設發(fā)送端緩存容量為2 條消息,可保證頂點v1與v2發(fā)往目的頂點d1與d2的消息被合并;但當v2繼續(xù)往d3發(fā)送消息時,由于緩存已滿,需將發(fā)往d1與d2的消息清空;最后v3往d2發(fā)送消息,但因緩存清空,該消息無法與v1與v2生成的消息合并,即應合并消息無法保證被徹底、完全地合并.相反地,在pull 方式下[5],如圖1(b)所示,目的頂點按照2 為單位進行分塊,然后以塊為單位拉取所需消息.第1個塊中,消息均發(fā)往d1與d2,局部性優(yōu)異,在緩存為2 的前提下,可被完全合并;之后第2 個塊啟動拉取操作.此外,這種按塊拉取的方式,可保證同一個塊內(nèi)的目的頂點僅掃描1 次對應的源頂點,降低源頂點的隨機讀取次數(shù).需要注意的是:這里的消息合并是泛化概念,即對于2.2 節(jié)中值合并類算法,可實現(xiàn)目的頂點ID與消息值合并;而對值連接類算法,僅可實現(xiàn)目的頂點ID的合并,其通信收益仍在,但效果減弱.
Fig.1 Illustration of message combination and vertex replication圖1 消息合并與頂點備份圖示
2.3.3 頂點備份
當某個頂點的出度較高以至于其在若干任務上均有大量的目的頂點(1 對多結構),可以將出邊遷移至目的頂點所在任務并對源頂點進行備份,從而將遷移邊所對應的網(wǎng)絡消息轉(zhuǎn)換為目的頂點所在任務的本地消息,同時增加了同步備份頂點值的網(wǎng)絡開銷.如圖1(c)所示,源頂點備份主要在傳統(tǒng)的push 框架下實現(xiàn),如GPS[7]和Pregel+[11].當頂點更新后,同步備份頂點的值,而備份頂點收到同步值之后立即沿遷移邊生成本地消息.同步值與本地消息均采用push 方式管理.考慮到遷移邊的消息不再由源頂點所在任務生成,這會影響消息合并的機率.因此,對于消息合并類算法,Pregel+[11]設計了合并優(yōu)先的備份機制,即只有當目的頂點的入度為1 時,其對應的源頂點才可能被備份(此時無其他源頂點指向該目的頂點,故不會損失合并收益),以兼顧合并與備份的收益.Pregel+[11]在非完全合并的push 框架下取得了較好的通信壓縮效果;但在新型pull 框架下,由于徹底合并已經(jīng)極大壓縮了通信規(guī)模,根據(jù)我們的實測結果,如表2 所示,雖然滿足備份約束的頂點比例較高,但備份僅帶來1%~7%的微弱壓縮效果,而實際性能收益可以忽略.表2 所示的4 個真實圖數(shù)據(jù)集,包括互聯(lián)網(wǎng)領域的Web 圖數(shù)據(jù)集Uk2014tpd(UK)、Wikipedia(Wiki)和Eu2015host(EU),以及社交網(wǎng)絡領域的常用圖數(shù)據(jù)集LiveJournal(LiveJ).
Table 2 Replicate Effect of Pregel+Under Thorough Combination表2 Pregel+在徹底合并下的備份效果 %
2.3.4 分析
對比消息合并和頂點備份機制可發(fā)現(xiàn),對于合并類消息算法如SSSP,在以塊為中心的pull 框架下,其完全徹底合并消息的特點特別適合多對1 結構,合并后僅需發(fā)送一條消息.本質(zhì)上,可以看作目的頂點在源頂點所在任務上的備份過程(如圖1(b)所示),最終的網(wǎng)絡通信代價取決于目的頂點的備份規(guī)模;另一方面,現(xiàn)有頂點備份適用于1 對多結構,僅有備份頂點的同步會引入網(wǎng)絡開銷,通信代價取決于源頂點備份規(guī)模(如圖1(c)所示).因此,無論是對目的頂點還是對源頂點進行備份,備份后的通信規(guī)模都是由備份頂點的數(shù)量決定的.注意到PowerGraph[9]提供了關于求解頂點v在P個任務上備份頂點數(shù)的期望公式:其中d為頂點v的出度或入度,V是頂點集,|V|是頂點集中頂點個數(shù),|V|與冪律偏斜指數(shù) α和Zipf 分布的歸一化常數(shù)直接相關.其中,消息合并關心的目的頂點備份規(guī)模依賴入度偏斜,而源頂點備份規(guī)模則依賴出度偏斜.圖2 分析了本文所用真實數(shù)據(jù)集的出入度偏斜指數(shù),可以看出兩者近似相等.因此,不同于傳統(tǒng)push 框架下的非完全合并,對于值合并類算法,pull 框架下的消息完全合可帶來與源頂點備份相近的通信收益;即使對于值連接類算法,pull 框架的優(yōu)異合并效果依然可以在目的頂點合并方面帶來性能收益.
Fig.2 The skewness of the in/out degree distribution for different datasets圖2 各數(shù)據(jù)集的出/入度偏斜指數(shù)
特別地,對于MSSP 類圖遍歷算法,頂點值是逐步收斂的.在第k步迭代中,同一目的頂點所對應的多個源頂點中可能有頂點值已經(jīng)達到收斂而停止更新,該部分頂點自然不會生成新消息.這種算法邏輯層面的部分收斂現(xiàn)象顯然會減少參與合并的消息規(guī)模,削弱多對1 結構產(chǎn)生的合并收益.相反地,頂點備份依賴1 對多結構.對于某個頂點而言,只要其尚未收斂,則需要繼續(xù)沿出邊廣播消息,頂點備份可繼續(xù)正常工作,不受頂點收斂的影響.這會在兩者之間產(chǎn)生通信收益差,且差值與消息值維度成正比,即MSSP類算法并發(fā)源頂點個數(shù)越多,2 種機制的通信收益差距越大.基于上述分析以及 pull 方法極低的內(nèi)存消耗特別適合大規(guī)模圖數(shù)據(jù)處理,本文因此致力于在以塊為中心的pull 框架下,針對多維消息算法,通過源頂點備份機制進一步優(yōu)化消息值的傳輸開銷.
考慮到源頂點備份會破壞原有圖劃分的均衡負載分布,且現(xiàn)有源頂點備份機制均在push 框架下設計,難以兼容新型pull 框架,因此需要重新設計備份機制并仔細分析備份閾值,以實現(xiàn)功能性和性能優(yōu)化方面的統(tǒng)一.
由于大部分算法的基本工作流程是頂點更新與邊消息傳遞,而圖中邊的規(guī)模遠大于頂點規(guī)模,故工作負載與邊密切相關.因此,本文假設采用簡單快速的Range 劃分以保證劃分后各任務間的出邊數(shù)目均衡,然后通過對消息傳遞模型的改進降低網(wǎng)絡通信量,以實現(xiàn)圖處理性能的整體提升.然而,已有消息傳遞模型的改進主要是基于非完全合并的push 環(huán)境下進行的.為實現(xiàn)通信開銷的進一步壓縮,本文在完全合并的pull 環(huán)境下,即HGraph[10]系統(tǒng)上設計新的輕量級頂點備份機制,以改善多維消息算法的消息值傳輸效率.
輕量級頂點備份的核心是,在pull 系統(tǒng)下,備份點的相關操作也采用pull 方式實現(xiàn);通過只使用一種pull 管理方式,避免了傳統(tǒng)push 頂點備份機制在pull方式下內(nèi)存開銷大與容錯負載重的問題,程序設計簡潔、易維護.本節(jié)首先總結push 備份在pull 框架下的缺點,然后介紹輕量級備份的按需同步和優(yōu)先級消息拉取技術,最后對比本文備份框架與PowerLyra的混合備份技術,突出本文備份的輕量級特點.
根據(jù)2.3 節(jié)中對消息合并與頂點備份的收益分析可知,在完全合并的pull 框架下,兩者對值合并類算法的通信壓縮效果相近.但針對多維算法,在保證完全合并(目的頂點ID合并、消息值合并)的前提下,可針對部分高出度頂點進行邊遷移與源頂點備份,以進一步優(yōu)化通信開銷.然而,目前源頂點備份對通信的改進都是在push 框架下實現(xiàn)的,備份頂點的同步以及遷移邊的消息生成方式,均采用push 主動推送方式,如果直接在pull 框架下實現(xiàn),會導致每個迭代步內(nèi)同時存在非備份頂點的pull 操作以及備份頂點的push 操作,帶來2 個缺點:
1)容錯管理復雜且效率低.容錯控制對圖迭代計算至關重要,可在部分任務發(fā)生故障時避免其他任務回滾、重新計算.目前的容錯機制主要采用檢查點回滾的方式進行故障恢復.為避免非故障任務的重新計算,需要不斷記錄每個任務的消息輸出,以便故障任務在重新計算時使用.大量的消息記錄,尤其是多維算法的大消息值特性,會嚴重影響正常迭代的計算效率.在push 方式下,由于消息是主動生成并發(fā)送出去,無法對此進行優(yōu)化;而pull 方式允許消息按需生成,故可按需生成故障任務恢復過程中所需的消息,不必主動記錄.當故障節(jié)點需要入度鄰居的消息來更新頂點值時,僅需沿入邊向入度鄰居發(fā)送拉取請求,而非故障任務上的頂點只需記錄對應迭代步的頂點值以響應消息請求即可.由于頂點的規(guī)模遠低于消息規(guī)模,記錄頂點值對正常迭代計算的影響很小.然而,一旦pull 與push 混合執(zhí)行,則仍需要對push 方式下的頂點同步值以及根據(jù)遷移邊生成的消息進行記錄,既增加了容錯管理的復雜性,也增大了容錯開銷.
2)多緩存高內(nèi)存消耗.使用push 方式進行消息發(fā)送時,需要在發(fā)送端針對每一個分布式任務設置一個雙緩存結構,以便其中一個緩存溢出、進行消息發(fā)送時,另一個緩存可繼續(xù)接收消息、不阻塞頂點的計算更新;在接收端,由于消息對應的目的頂點的局部性差且無法預知其到達時間,需要根據(jù)目的頂點的分塊信息、消息源頂點所在的任務等設置多個緩存區(qū),以避免針對同一個目的頂點的消息進行整理時導致頻繁的加鎖開銷.在多維消息類算法中,由于頂點值以及據(jù)此生成的消息值的規(guī)模巨大,發(fā)送端與接收端的多緩存設置給內(nèi)存造成巨大壓力.而在pull 系統(tǒng)中,消息按需生成且生成之后被立即消耗,因此根據(jù)需要更新的目的頂點的規(guī)模預估消息規(guī)模設置緩存即可,避免了繁雜的多緩存結構,節(jié)省了內(nèi)存開銷.同理,當pull 與push 混合時,為正確、高效運行push 機制,需要配備多個緩存結構,增大了內(nèi)存開銷.因此,需要設計與pull 機制相兼容的頂點備份框架,在實現(xiàn)輕量級程序框架設計的同時,可以實現(xiàn)容錯和內(nèi)存管理的簡潔與高效.
鑒于push 備份與pull 框架的沖突點是由備份點的同步方式以及遷移邊的消息生成方式所導致的,因此需要將這2 種方式改為pull 方式,以實現(xiàn)系統(tǒng)兼容.本節(jié)重點介紹基于按需同步的拉取式頂點備份機制.
3.2.1 按需同步框架設計
執(zhí)行頂點備份后,每個迭代步中頂點值計算更新所需的消息來源于2 個部分:1)所有任務上非備份頂點發(fā)送的非備份消息值;2)備份到本地的頂點根據(jù)遷移出邊發(fā)送的本地備份消息值.當目的頂點塊欲執(zhí)行更新操作時,針對非備份消息值,直接以塊為單位向所有任務發(fā)送拉取請求,而各任務接收請求后,直接掃描本任務內(nèi)指向該請求塊內(nèi)所有目的頂點的出邊,生成所需消息并在發(fā)送端執(zhí)行徹底合并后發(fā)送給請求端(即目的頂點塊所在的任務),該過程可由現(xiàn)有pull 機制直接完成;而針對本地備份消息值,在按需同步策略下,某個頂點值被更新后,不會主動推送消息以同步其備份頂點值,因此應先同步其備份值,然后生成本地備份消息.具體地,在同步備份頂點值時,仍然以目的頂點塊為單位向所有任務廣播同步請求,而各任務收到請求后,檢索本地頂點是否有指向該請求塊內(nèi)目的頂點的遷移出邊(即是否有備份),如是,則響應同步請求,將頂點值發(fā)送到請求端,然后根據(jù)同步后的備份頂點值生成本地備份消息.進一步地,為實現(xiàn)按需生成本地備份消息的目標,需將備份的源頂點和遷移的出邊以鄰接表的形式分塊存儲,即每個遷移過來的鄰接表按照目的頂點所在的塊對遷移邊進行分割存儲.如是,當目的頂點所在的塊欲執(zhí)行更新操作而拉取消息時,僅需讀取每個遷移鄰接表中對應該塊的部分出邊即可生成所需消息,從而避免push 方式下的多種緩存設置,降低內(nèi)存消耗.
3.2.2 2 階段同步響應優(yōu)化
在同步響應過程中,各任務的檢索操作需要遍歷所有出邊,時間復雜度較高.此外,某個源頂點的出邊可能指向任務Ti上不同塊內(nèi)的目的頂點.當任務Ti上不同塊內(nèi)的目的頂點發(fā)送同步請求時,該源頂點所在的任務需進行多次檢索以及響應操作,造成備份頂點值的冗余同步,浪費計算和網(wǎng)絡資源.為提高同步效率,本文設計了基于字典的2 階段同步響應機制.具體地,每個任務在內(nèi)存中維護同步響應字典,即如果某個頂點在某個任務上存在備份,則在字典中添加該條記錄,且標記該備份值在當前迭代步是否已經(jīng)被同步.根據(jù)2 階段同步響應機制,當某個目的頂點塊欲向任務Ti發(fā)送同步請求時,其首先查驗本地是否存在來自于Ti的遷移邊,如果沒有,顯然無備份頂點,無需發(fā)送請求;如存在,則正常發(fā)送請求.任務Ti收到請求后,首先查驗響應字典,如果指向請求端所在任務存在備份點且所有備份點均已被同步,則不再響應,返回值為空;否則,根據(jù)字典中尚未標記同步的頂點查找頂點值以響應同步備份頂點值并更新字典內(nèi)容.2 階段同步機制顯然可以根據(jù)字典信息避免冗余同步,提高響應效率.
3.2.3 實例演示
圖3 展示了按需同步策略下數(shù)據(jù)存儲和管理方式的一個實例.該實例包含20 個頂點(圖3 中頂點編號直接以數(shù)字形式呈現(xiàn)),分布于2 個分布式任務T1與T2.以T1為例,本地圖數(shù)據(jù)包含頂點v1至v10及其鄰接表,具體分為2 個塊,分別包含頂點v1至v6和v7至v10.對應地,出邊按照目的頂點的分塊信息按列分割存儲.如v1的出邊指向4 個目的頂點,其中目的頂點v2和v3屬于同一個頂點塊,故對應出邊被存儲到同一列中;同理,v7和v18分別屬于不同頂點塊,故對應出邊被存儲在另外2 列中.特別地,v6,v7,v10分別有邊遷移到任務T2,即在T2上存在備份.以為v6例,其出邊〈v6,v13〉和〈v6,v15〉被遷移到T2并按照目的頂點的分塊信息進行按列分割存儲,而遷移之后,T1的響應字典中應添加1 條v6指向T2的記錄.在第k步迭代中,假設T2上的頂點塊v11至v15欲更新頂點值,則分2 步拉取所需消息:1)本地備份消息,即首先檢查本地是否有來自T1的遷移邊,如有,則向T2發(fā)送同步請求,而T1收到請求后,首先檢查字典中T1對應的列是否均為1,否則,如有且字典中對應值為0(如此處的v6與v7),則應封裝對應頂點值進行響應并將字典中的值更新為1(此處即v6與v7在T2列的值),而T2收到同步值之后根據(jù)遷移邊按需生成本地備份消息;2)非備份消息,可按照原有pull 框架設計,發(fā)送消息拉取請求并通過掃描對應列的出邊信息生成消息并返回給T2.當頂點塊v16至v20被調(diào)度更新時,可重復此過程,但需要注意的是,v16的更新依賴于v7的消息,但v7的頂點值已經(jīng)被同步(即T1中字典的對應值為1),故該值不會被再次返回,以避免冗余同步,減少網(wǎng)絡通信開銷.
Fig.3 The data storage and management methods of on-demand synchronization update strategy圖3 按需同步更新策略的數(shù)據(jù)存儲和管理方式
在按需同步備份更新策略下,頂點更新所依賴的消息包括備份消息和非備份消息.為獲取這2 類消息,直觀的解決方案是并發(fā)發(fā)送備份值同步請求和非備份消息請求(詳見圖3 示例).然而,這種方案的弊端是頂點同步值和非備份消息值的同時傳輸會增大瞬時通信負載,造成網(wǎng)絡擁堵;而在目的任務接收到響應的備份頂點同步值和非備份消息值后,迭代計算的負載重心轉(zhuǎn)為備份消息的本地生成以及目的頂點更新,均不涉及網(wǎng)絡通信,導致網(wǎng)絡資源空閑.本節(jié)介紹基于優(yōu)先級拉取的并發(fā)消息生成策略,通過備份頂點值和非備份消息值的錯峰拉取,提高網(wǎng)絡資源使用效率.
3.3.1 優(yōu)先級錯峰拉取
基于優(yōu)先級錯峰拉取和并發(fā)拉取的區(qū)別在于,前者優(yōu)先拉取備份頂點的同步值,然后拉取非備份消息且同時啟動本地備份消息的生成與合并處理工作,最后待所有需要的消息準備完畢后,進行目的頂點的計算更新.該方案的優(yōu)點是不同優(yōu)先級的拉取請求錯峰響應,消息在網(wǎng)絡中的傳輸壓力減小,且減少了空閑等待狀態(tài),充分利用網(wǎng)絡通信帶寬.
3.3.2 優(yōu)先級動態(tài)調(diào)整
給定一個目的頂點塊,由于響應字典的存在以及算法本身消息規(guī)模的動態(tài)變化,會導致需要拉取的備份頂點同步值以及非備份消息值的規(guī)模動態(tài)變化.直觀地,當兩者的規(guī)模較低時,優(yōu)先級錯峰拉取可能導致兩者各自均無法充分利用通信帶寬,降低網(wǎng)絡資源使用效率.式(2)和式(3)分別描述了并發(fā)拉取和優(yōu)先級拉取的性能度量方法.
無論采用何種拉取策略,具體工作負載均包括拉取非備份消息值的開銷 φmsg和拉取本地備份消息的開銷,而后者可細分為同步備份頂點值開銷 φsyn和本地備份消息生成開銷 φpro.對于并發(fā)拉取,由于2 種拉取請求同時發(fā)送、同時響應,故其性能指標 φcon取決于 φmsg與 φsyn+φpro中的較大值,而考慮到同時請求產(chǎn)生的網(wǎng)絡擁堵,應添加懲罰因子 λ(λ ≥1);對于優(yōu)先級拉取,同步請求被優(yōu)先發(fā)送,而后并行執(zhí)行備份消息的拉取以及本地備份消息的生成,故其性 φpri能應在 φsyn的 基礎上累加后兩者的最大值,即當 λ較低,比如 λ=1時,顯然有 φcon<φpri,即并發(fā)拉取優(yōu)于優(yōu)先級拉取;反之,當 λ較高,即備份頂點值和非備份消息值規(guī)模較大而導致網(wǎng)絡擁塞程度加劇時,優(yōu)先級拉取優(yōu)于并發(fā)拉取.在實際運行圖迭代計算時,可根據(jù)算法的執(zhí)行進度和網(wǎng)絡瞬時狀態(tài),實時計算 φcon與 φpri的 對比結果進而選擇 決定是否將同步請求的優(yōu)先級升高.具體地,對于需要同步的備份頂點值的規(guī)模,可在請求發(fā)起端(如圖3 中的任務T2)記錄當前迭代步已經(jīng)完成同步的備份頂點,當啟動一個新的目的頂點塊的更新時,可先分析本地遷移邊以確定需要同步的備份頂點數(shù)目,然后對比已經(jīng)完成同步的備份頂點,以估算同步開銷;同理,可根據(jù)本地遷移邊規(guī)模估算本地備份消息的生成開銷;對于非備份消息的規(guī)模,因該類消息由其他所有任務生成,相關統(tǒng)計信息無法在本地獲取,故可在迭代計算過程中,通過記錄上一個迭代步中獲取的消息規(guī)模來估算本步的消息規(guī)模[28];而對于 λ,可通過測試給定集群在不同擁塞程度下的通信延遲并記錄整理為先驗知識,直接帶入公式進行對比分析.
圖劃分是分布式圖計算的基礎,而劃分技術可分為邊割與點割兩大類.邊割的核心是以頂點為中心進行圖劃分,即將頂點分配到各計算任務;如果一條邊的2 個頂點位于不同任務,則該邊成為切割邊,在迭代計算過程中會引入通信開銷;因此在頂點分配時應考慮切割邊的規(guī)模以優(yōu)化通信開銷,Pregel 等系統(tǒng)均以邊割方式運行圖算法[11].點割的核心是以邊為中心完成圖劃分,即將邊分配到各計算任務;如果同一個頂點關聯(lián)的2 條邊位于不同任務,則該頂點被切分,且多個切分點中會隨機選擇一個作為主控頂點master 而其余作為切分后的從節(jié)點mirror 存在,在迭代計算過程中的通信僅發(fā)生在master 與mirror之間.顯然,邊分配的過程應盡量減少頂點被切分的概率.PowerGraph 等系統(tǒng)以點割方式運行圖計算[9].
本文的頂點備份是在邊割基礎上進行的通信優(yōu)化.給定邊割的圖劃分結果,也即頂點在任務間的分布已經(jīng)確定,備份機制將對每個頂點v(master)的出邊進行解析,通過分析其目的頂點在任務間的分布來評估后續(xù)計算過程中的通信開銷;如果v與任務Ti間的通信過高(即指向Ti中頂點的出邊數(shù)目超過閾值θ),則將v中對應的邊定向遷移到Ti中并在Ti進行v的備份(mirror).
基于以上描述,本文備份框架與點割方案中,雖然頂點均存在master 與mirror 的功能角色之分,但在備份的主動性和方向性方面存在區(qū)別.
1)備份的主動性.在基于邊割的頂點備份優(yōu)化框架中,由于頂點(master)分布已經(jīng)確定,可精確分析“頂點—任務”之間的通信開銷并主動決定是否進行出邊遷移與頂點備份;而點割方案中,采用啟發(fā)式規(guī)則來指導邊的分配并在分配過程中直接(被動)完成頂點切分(以及master 和mirror 的界定),由于邊分配是動態(tài)完成的,系統(tǒng)無法主動分析通信收益以決定是否進行頂點切分.
2)備份的方向性.在基于邊割的頂點備份框架中,由于頂點備份是因遷移出邊而引起的,故備份的頂點均作為邊的起始點而存在,也即僅將高出度頂點v(master)切分為若干備份頂點(mirror),當v(master)向其出度鄰居廣播消息時,可先通過網(wǎng)絡將v(master)的值同步到備份頂點(mirror)再由備份頂點進行局部廣播,即將消息傳遞給目的頂點,從而優(yōu)化通信開銷;而在點割方案中,為保證同一個任務上的子圖完整性,備份頂點(mirror)既可能作為邊的起始點存在,也可能作為邊的終止點存在,邊的起始點可將發(fā)往頂點v的消息首先在其各任務的mirror 上進行局部計算以減輕v(master)的處理壓力(如PageRank 算法中,可基于mirror 進行消息的局部累加和操作),邊的終止點可減少v(master)向其出度鄰居廣播消息時的通信開銷.
下面分析本文舍棄點割,轉(zhuǎn)而基于邊割機制設計頂點備份優(yōu)化機制的原因.
1)從備份的方向性角度.針對本文關注的多維消息類算法,消息值通常不滿足累加特性,即無法將多個消息值通過計算合并為一個消息值(如PageRank中的累加求和,以及最短路徑計算中的最小值計算),而只能將消息值進行簡單串聯(lián)連接(即本文表1 中的值連接類算法),此時點割機制中,作為起始點存在的mirror 不但失去“先局部計算以減輕v(master)處理壓力”的意義,反而引入了mirror 的存儲開銷與維護開銷.另一方面,本文相關技術基于以塊為中心的pull 框架實現(xiàn),其基礎框架可保證各頂點發(fā)送的消息在發(fā)送端實現(xiàn)“能合并盡合并”[10],故即使針對單維值可合并的多維算法(如MSSP),可以Combine 合并的方式在發(fā)送端實現(xiàn)消息的局部合并,且僅在運行時使用,無需始終維護mirror.
2)從備份的主動性角度.基于邊割的頂點備份可保證被備份的頂點均可帶來通信收益,而點割機制由于邊分配的動態(tài)性,無法保證備份的通信收益.此處,注意到PowerLyra[20]基于PowerGraph 的點割進行了混合備份優(yōu)化(hybrid-cut),即通過閾值設定,僅針對高度頂點進行點割而對于低度頂點保持邊割.這與本文對高度頂點進行切分,以最大化減少網(wǎng)絡通信開銷的目的是一致的.然而,本文是在邊割基礎上完成頂點備份,而PowerLyra 是在點割基礎上進行優(yōu)化.顯然,兩者在備份方向性的2 個角度存在區(qū)別.具體地,從頂層設計層面,本文和PowerLyra 均針對高度頂點進行切分,這必然涉及到“高度”的衡量標準,即備份閾值θ.從實現(xiàn)層面,本文的 θ作用于頂點v指向任務Ti上目的頂點的出邊規(guī)模,而非PowerLyra 中作用于v的全部出邊(即出度).由于出邊規(guī)模超過閾值即會產(chǎn)生備份,考慮到高出度頂點指向某個具體任務的出邊也可能較少,顯然本文的作用域更為精確,可確保通信收益.其次,PowerLyra 并未給出閾值θ的推薦方式,僅以多次重復實驗的手工方式選擇較優(yōu)閾值;而本文在第4 節(jié)分析了遷移導致的負載偏斜代價與通信收益,可基于統(tǒng)計信息給出推薦的最優(yōu)閾值并在5.4 節(jié)通過大量實驗驗證了相關方案的可行性.
下面通過實例分析,展現(xiàn)本文備份機制的輕量級特點.假設分布式任務的數(shù)目為3,圖4 給出了一個包含6 個頂點、9 條邊的示例圖在PowerLyra 和本文輕量級備份框架下的備份情況分析.設定備份閾值θ=3,PowerLyra 以邊表的方式并行加載輸入圖并根據(jù)邊的源頂點的Hash 值,即Ti=hash(exy.x-1)%3,決定該邊的分配位置.然后統(tǒng)計各頂點的出度,如果出度值大于等于3,則認定為高度頂點,則按照該頂點關聯(lián)出邊的目的頂點重新分配出邊,即Ti=hash(exy.y-1)%3.這里頂點v1被判定為高度頂點,其出邊e12與e15被遷移到任務T2,而e13被遷移到任務T3.最后按照備份方向性的討論,完成頂點備份,即T1中 的v3,T2中 的v1以 及T3中 的v1與v2.然 而,T2中的v1顯然無法進行通信優(yōu)化,因為v1在該任務上僅有一個目的頂點,備份與否并不能優(yōu)化通信規(guī)模.這是由于點割方案無法主動控制頂點切分而導致的現(xiàn)象.相反地,本文輕量級備份以鄰接表作為輸入,并利用Range 劃分按照字節(jié)規(guī)模均衡分割、并行加載.而對于高度頂點的界定,采用“頂點—任務”模式進行主動界定.此處,只有頂點v1向任務T2進行邊e12,e13,e14的遷移并備份v1,因為v1指向T2的出邊數(shù)目大于等于閾值θ,從而保證通信收益.注意到在本文備份機制下,出邊被遷移后,任務T2的負載加重,而其中的偏斜程度與閾值的設定相關.第4 節(jié)將詳細討論閾值的設定問題.
綜上,基于本文關注的多維消息算法的巨大內(nèi)存開銷,以及以塊為中心的、最新的pull 系統(tǒng)框架,考慮到點割的維護開銷和通信收益的不確定性,本文基于邊割的圖劃分技術,通過頂點備份進行通信再優(yōu)化.故本文備份機制的輕量級特點,可總結為4 點:1)優(yōu)化的pull 同步方式可顯著減少備份頂點同步過程中的內(nèi)存開銷并與普通消息的pull 方式統(tǒng)一,便于系統(tǒng)級優(yōu)化(如容錯控制);2)僅按照出邊方向進行頂點備份,減少備份開銷;3)通過精確控制備份閾值的作用范圍,避免無效的冗余備份,保證通信收益;4)提供備份閾值的自動優(yōu)化計算模型,避免頻繁手動測試的閾值選擇方式.
本文基于Range 劃分完成邊割,而Range 方法將輸入圖(由頂點和出邊組成)的數(shù)據(jù)規(guī)模進行均等切分,可保證各計算節(jié)點負載(即頂點和出邊的數(shù)量之和)的均衡性.在此基礎上,頂點備份框架在圖劃分階段額外引入各任務間頂點的備份和出邊的遷入遷出等操作.考慮到真實圖的度分布通常有冪律偏斜特點,備份頂點在各任務間的分布也具有偏斜,且每個任務遷移邊的規(guī)模不盡相同,這顯然破壞了原Range劃分的負載均衡.故本文設計的框架對負載均衡方面沒有改善,大部分情況下甚至會加重負載偏斜.
Fig.4 Comparison of hybrid-cut and lightweight vertex replication圖4 混合切分與輕量級頂點備份的對比
在頂點備份機制中,位于任務Ti上的頂點v是否需要在任務Tj上進行備份,取決于其出邊是否被遷移.直觀地,如果v的鄰接表中存在大量指向Tj上目的頂點的出邊,則邊遷移可顯著降低通信代價,但同時也會引起Ti與Tj的負載變化進而影響性能.因此,需要根據(jù)通信收益和負載影響綜合考慮,設定出邊遷移閾值θ,當指向Tj的出邊數(shù)目超過 θ時,證明通信收益可抵消負載變化影響,允許遷移,否則禁止遷移.顯然 θ的設定對備份機制的實際性能收益至關重要.在實際應用場景,可通過多次運行迭代算法手動尋找最優(yōu)閾值,但這會浪費大量計算資源,可操作性較差.一種理想的方式是給出 θ相關的性能函數(shù),然后自動分析最優(yōu)閾值以指導實際算法的運行.本節(jié)重點介紹一種基于線下先驗知識與線上實時信息相結合的閾值計算模型,其中4.1 節(jié)介紹預測函數(shù),而4.2節(jié)介紹重要參數(shù)的線下與線上獲取方式.
輕量級頂點備份框架的性能預測指標要綜合考慮頂點備份后的通信凈收益和備份前后各任務負載均衡程度變化導致的水桶效應影響.給定遷移閾值θ,式(4)給出了性能預測函數(shù)的邏輯結構,其中 φcom表示頂點備份后的通信凈收益,而φload代表備份前后各任務的負載均衡變化引起的水桶效應影響.
對于通信凈收益 φcom,由第3 節(jié)可知,頂點備份在產(chǎn)生消息通信收益的同時,會引入備份頂點值的同步開銷.其中,消息通信收益取決于頂點備份所產(chǎn)生遷移的出邊數(shù)量(E上面的橫杠表示備份)以及沿出邊發(fā)送的消息字節(jié)大小 ηmsg,而同步開銷則取決于備份頂點的數(shù)量和被同步的頂點值字節(jié)大小從字節(jié)規(guī)模角度給出了通信的凈收益.需要注意的是,分布式網(wǎng)絡通信的基本流程是首先在發(fā)送端進行數(shù)據(jù)序列化,然后將序列化后的數(shù)據(jù)通過網(wǎng)絡傳輸?shù)浇邮斩耍邮斩诉M行反序列化操作之后即可得到可用數(shù)據(jù).因此,在得到消息總規(guī)模和同步數(shù)據(jù)總規(guī)模后,可根據(jù)網(wǎng)絡傳輸速率Snet和接收端、發(fā)送端的序列化、反序列化速率Sio來計算凈性能收益 φcom:
其中,P代表共同參與計算的分布式任務數(shù)目,式(5)等號右邊第1 項為分布式環(huán)境下的凈性能收益;序列化和反序列化需要在發(fā)送端和接收端分別執(zhí)行,因此需要將字節(jié)規(guī)模乘以系數(shù)2.
對于負載均衡變化導致的水桶效應影響 φload,考慮到某個任務Ti在向其他任務遷移出邊的同時,也在接收其他任務遷入的邊數(shù)據(jù).這種遷入遷出會打破既有圖劃分結果的均衡性,進而影響負載偏斜程度,導致水桶效應延遲發(fā)生變化.分布式環(huán)境下,系統(tǒng)處理性能取決于負載最重的任務,因此可用備份前后最重負載的差值作為衡量指標.若備份后的負載均衡狀況優(yōu)于備份前,則負載指標的計算結果為正,對處理性能起正向加速作用;反之,則會降低系統(tǒng)處理速度.φload的計算方式為
其中 1 ≤i≤P,1 ≤j≤P,|Vi|和 |Ei|分別表示計算任務Ti上分配的子圖Gi的頂點數(shù)和邊數(shù),而分別表示備份到任務Tj上的頂點數(shù)和由頂點備份導致的出邊遷入遷出變化數(shù).此外,無論是本地頂點還是備份頂點,在計算更新或同步更新時,會產(chǎn)生計算負載,因此分別加入調(diào)節(jié)因子 α 和 β以調(diào)節(jié)其相對于邊操作的負載.其中,α的值取決于頂點的計算更新以及遍歷參與計算更新的接收消息的復雜度;β的值取決于備份頂點的同步更新.顯然,α 和 β的值由算法和數(shù)據(jù)集共同確定.最后,Stpt為系統(tǒng)吞吐效率,可在給定集群上通過運行標準測試程序獲得.
根據(jù)式(4)~(6),當 φ為正值時可提高計算效率,而 φ的預測值主要取決于4 類參數(shù):1)遷移與備份相關類參數(shù),具體包括備份頂點數(shù),遷移邊數(shù),和圖劃分結束后各任務的子圖分布 |Vi|與 |Ei|,其中 |Vi|與 |Ei|的取值依賴具體的圖數(shù)據(jù)集拓撲結構以及分布式任務數(shù)目P,而備份與遷移參數(shù)還與備份閾值 θ密切相關;2)應用算法類相關參數(shù),主要包括 ηval,ηmsg,其取值由應用層面的圖迭代算法決定;3)硬件配置類參數(shù),即Snet,Sio,Stpt,可通過在給定集群上運行標準測試程序獲得;4)權重調(diào)節(jié)因子 α 和 β,可通過分析應用算法復雜度與圖數(shù)據(jù)集的平均出入度計算得到.在上述4 類參數(shù)中,第3 類屬于固定常量,只要集群的硬件配置不變,無需反復測試,較易獲取和維護;第2 類和第4 類與具體的應用算法和數(shù)據(jù)集相關,需要根據(jù)用戶提交的作業(yè)程序?qū)崟r分析,屬于較易獲取的線上實時參數(shù);第1 類因涉及圖拓撲結構以及關鍵變量θ,難以通過直觀的理論分析進行準確估計,因此本節(jié)對第1 類參數(shù)的獲取進行詳細討論.
雖然第1 類參數(shù)難以理論評估,但注意到其只與數(shù)據(jù)集和集群任務配置相關,而與具體的應用算法無關.考慮到具體領域的圖應用通常是根據(jù)指定的數(shù)據(jù)集進行多方位的挖掘分析,如社交網(wǎng)絡公司對其運營的社交網(wǎng)絡圖進行社團聚類、廣告推薦以及成員影響力評估等多種業(yè)務分析,論文檢索系統(tǒng)對學術研究網(wǎng)絡進行合作研究團隊識別、新研究領域發(fā)現(xiàn)以及學界泰斗與新星挖掘等業(yè)務分析.這表明,針對一個數(shù)據(jù)集,通常會從不同角度進行不同類別的應用分析,即多次在同一個數(shù)據(jù)集上運行不同算法.因此,可對給定的數(shù)據(jù)集和任務數(shù)目配置,通過線下變換 θ值統(tǒng)計不同任務上的第1 類參數(shù)值并保存為先驗知識.當需要在指定數(shù)據(jù)集上運行某種算法時,可依據(jù)先驗知識和算法相關的實時信息,立即計算出較優(yōu)的備份閾值,指導輕量級備份框架的運行.
在參數(shù)提取階段,僅需統(tǒng)計各任務的備份頂點數(shù)目以及遷移邊交換情況,而無需進行具體的迭代計算.因此可直接利用分布式圖處理系統(tǒng)的數(shù)據(jù)加載流程進行邏輯數(shù)據(jù)統(tǒng)計,而不必進行實際的物理遷移與頂點備份操作,以節(jié)省參數(shù)提取開銷.邏輯統(tǒng)計的另一個優(yōu)勢是,可同時分析多個 θ取值下的參數(shù)數(shù)值,避免針對每個閾值取值進行一次參數(shù)提取,進一步壓低提取開銷.下面通過算法1 介紹第1 類參數(shù)的具體提取過程.
算法1.備份頂點和遷移邊數(shù)目統(tǒng)計.
算法1 展示了P個分布式任務中某個任務Ti的運行流程.該任務對給定的劃分子圖Gi,分析各種備份閾值 Θ={θ1,θ2,…}下的頂點備份與遷移邊數(shù)目等統(tǒng)計信息.具體地,通過遍歷Gi中的每條鄰接表記錄,統(tǒng)計其出邊所指向的目的頂點在P個任務之間的分布頻數(shù)并記錄在數(shù)組dstTid中(行⑥~⑨);之后分析不同閾值設定下如 θj,是否向?qū)娜蝿杖鏣k進行出邊遷移以及頂點備份,如是,將該統(tǒng)計信息記錄在各閾值下備份頂點數(shù)以及遷出出邊數(shù)的分布矩陣Mi與Ni的第(j,k)位置(行⑩~?).需要注意的是,此處僅統(tǒng)計分布信息,而無需對邊進行實際物理遷移(行?),因此算法1 的運行效率較高.
本文在支持完全合并的HGraph 系統(tǒng)上實現(xiàn)了輕量級頂點備份框架,可同時支持消息完全合并以及源頂點備份,在繼承HGraph 系統(tǒng)優(yōu)勢的前提下,實現(xiàn)備份機制的內(nèi)存優(yōu)化和通信性能提升.為便于區(qū)分,實現(xiàn)輕量級按需備份的系統(tǒng)被稱之為LGraph(light-weight graph).實驗設計方面,首先在不同數(shù)據(jù)集上對比輕量級頂點備份與傳統(tǒng)push 備份的內(nèi)存使用占比(5.2 節(jié)),然后給出輕量級頂點備份與HGraph原系統(tǒng)的性能對比與分析(5.3 節(jié)),最后驗證自適應性能優(yōu)化模型的預測分析結果以及備份過程對性能的影響(5.4 節(jié)).應用算 法選取 表1 中多維算法MSSP,SC,SA,分別作為合并類和連接類的代表.其中MSSP 與SC 的算法邏輯已在2.2 節(jié)中介紹.而SA算法是基于LPA 設計完成的廣告?zhèn)鞑ツM算法,即每個頂點維護自己感興趣的廣告標簽列表,迭代開始后,各頂點根據(jù)入度鄰居的廣告喜好分布對自己的廣告列表進行更新并廣播給出度鄰居,其消息值不可合并且消息值需要使用多個int 數(shù)據(jù)來表征廣告標簽.當涉及運行時間分析時,由于SC 與SA 算法在每步迭代中所有頂點均激活并向所有出度鄰居廣播消息,各步的負載相同,故除非特殊聲明,否則僅匯報一個迭代步的運行時間;而對于MSSP,各步激活頂點規(guī)模動態(tài)變化,導致負載也不盡相同,因此匯報整個算法收斂的總迭代計算時間.
實驗集群由5 臺小型服務器組成,包括4 個計算節(jié)點和1 個主控節(jié)點,節(jié)點配備千兆網(wǎng)卡并使用千兆交換機互聯(lián),實測網(wǎng)絡傳輸性能為89 MBps①網(wǎng)絡性能測試使用iperf-2.0.5 工具.主控節(jié)點配置Intel i9-10900K,3.7 GHz 的10 核CPU,1 TB固態(tài)硬盤,64 GB 內(nèi)存;每個計算節(jié)點配置Intel 至強E3-2224,3.5 GHz 的4 核CPU,1 TB 機械硬盤,32 GB內(nèi)存.實驗使用4 個真實圖數(shù)據(jù)集,各數(shù)據(jù)集的具體信息描述如表3 所示.
Table 3 Description of Real Datasets表3 真實數(shù)據(jù)集描述
實驗參數(shù)設定方面主要涉及閾值優(yōu)化模型,其中網(wǎng)絡通信與序列化/反序列化速率為Snet=89 MBps,Sio=507 MBps,平均負 載吞吐率為Stpt=42 MBps;另一方面,負載權重調(diào)節(jié)因子 α=(μin·ηmsg)/Supd,β=(μout·ηval)/Supd,其中 μin與 μout分別為對應數(shù)據(jù)集的平均入度與平均出度,Supd為頂點更新/同步的CPU 處理速度,實測值為1533MBps.最后,對于MSSP 類算法的并發(fā)源頂點數(shù)目設置,考慮到其合并與備份的通信收益之差與并發(fā)粒度成正比,同時在真實應用環(huán)境下通常在硬件允許的前提下采用較大的并發(fā)粒度以提高圖遍歷共享收益,故在UK 和LiveJ 數(shù)據(jù)集上將并發(fā)粒度直接設置為平均出入度值;而對較為稠密的高出入度圖Wiki 和EU,將并發(fā)源頂點數(shù)目設置為平均出入度的2 倍,以強化通信收益.
本節(jié)在4 個真實數(shù)據(jù)集上對比了傳統(tǒng)push 同步頂點備份方式與按需同步頂點備份方式的內(nèi)存使用占比情況(即push 同步的內(nèi)存消耗/按需同步的內(nèi)存消耗)和同步性能,以證明按需同步頂點備份方式在減少內(nèi)存資源消耗方面的同時還可以保證相近的同步性能.表4 和 表5 分別展 示了連 接(SC)和合并(MSSP)類多維消息算法的對比結果.由于按塊拉取框架的消息按需生成,因此不同的頂點分塊數(shù)目決定了按需生成消息的規(guī)模.故測試過程中,通過將每個任務上的頂點分塊數(shù)目由2 增加到64,觀察2 種同步方式的內(nèi)存消耗變化.
Table 4 Memory Usage of Concatenation Algorithms表4 值連接類算法內(nèi)存使用情況
Table 5 Memory Usage of Combination Algorithms表5 值合并類算法內(nèi)存使用情況
在2 類算法中,按需同步的備份方式均表現(xiàn)出更低的內(nèi)存使用情況(對比值均大于1).這是因為按需同步備份方式節(jié)省了發(fā)送端和接收端的多緩存以及本地消息接收緩存設置.隨著每個任務上的頂點分塊數(shù)的增加,每塊內(nèi)部的頂點規(guī)模下降,其接收的消息規(guī)模也隨之成比例下降,導致按需生成的消息規(guī)模降低,內(nèi)存消耗減少;與此同時,push 同步方式的發(fā)送與接收端緩存,只受任務數(shù)目的影響,不隨頂點分塊的變化而改變.因此,隨著塊規(guī)模的增大,在不同數(shù)據(jù)集和算法的所有組合測試案例中,兩者的內(nèi)存消耗對比值均呈現(xiàn)增加趨勢.此外,對于MSSP,因不同數(shù)據(jù)集下其并發(fā)源頂點數(shù)量的不同,每條消息的大小也會發(fā)生變化,導致不同數(shù)據(jù)集下內(nèi)存收益表現(xiàn)出較大的差異性.特別地,EU 數(shù)據(jù)集上的MSSP算法并發(fā)源頂點數(shù)量最多,需要消耗大量內(nèi)存,故在頂點分塊為64 時2 種方案的內(nèi)存消耗對比最為明顯,此時push 同步的內(nèi)存消耗規(guī)模約是本文方法的15 倍.因此,對于消息規(guī)模巨大的多維消息類算法,采用本文的按需同步方式可有效降低消息傳遞的規(guī)模,從而減少系統(tǒng)的內(nèi)存資源消耗.
在同步性能分析方面,由于備份頂點的同步操作與正常消息值的交換操作緊密耦合,難以剝離出同步操作的精確時間開銷.考慮到同步方式的不同,僅影響同步性能而不會影響正常消息的操作效率以及頂點更新效率,此處采用控制變量法,即設定其他參數(shù)均一致而僅變化備份頂點的同步方式,然后通過匯報迭代計算過程的運行時間來反映不同同步方式的性能影響.如表6 所示,通過手動測試不同備份閾值下LGraph 的運行時間來確定最優(yōu)閾值,然后以最優(yōu)閾值作為輸入,測試不同同步方式下的運行時間.這里,npull 是未采用3.3 節(jié)中優(yōu)先級技術的拉取操作方案而pull 是集成優(yōu)先級技術的方案.雖然pull方式涉及同步請求發(fā)送環(huán)節(jié),但受益于同步字典的冗余消除剪枝作用以及優(yōu)先級調(diào)度,其同步效率與push 方式幾近相同(延遲率 <2%).綜合表4~6 可知,本文的pull 同步方式在不影響同步效率的前提下可顯著優(yōu)化內(nèi)存使用開銷,從而提升系統(tǒng)在數(shù)據(jù)處理容量方面的擴展性.
本節(jié)分別在4 個真實數(shù)據(jù)集上運行3 種多維消息類算法,通過手動測試不同備份閾值下LGraph 的運行時間并選擇與最優(yōu)閾值下的性能與無備份機制的HGraph 進行對比,以展現(xiàn)輕量級備份框架的最佳性能收益.由于算法和數(shù)據(jù)集本身存在的復雜性和冪律偏斜特性,每組實驗的實際收益各不相同,圖5~7 分別展示了對比效果.
Table 6 Comparison of Synchronizing Running Time for Replicated Vertices with pull and push表6 pull 與push 方式下備份頂點的同步運行時間對比 s
Fig.5 Running time of SC algorithm on different data sets圖5 SC 算法在不同數(shù)據(jù)集上的運行時間
Fig.6 Running time of SA algorithm on different data sets圖6 SA 算法在不同數(shù)據(jù)集上的運行時間
Fig.7 Running time of MSSP algorithm on different data sets圖7 MSSP 算法在不同數(shù)據(jù)集上的運行時間
在算法和數(shù)據(jù)集的各種組合中,LGraph 的計算時間始終低于HGraph.特別地,對于連接類算法SC和SA,由于其只能合并目的頂點ID,消息合并收益對整體性能提升并不敏感.換言之,通信性能的優(yōu)化主要依靠頂點備份.此時通過選擇較好的備份閾值,可以顯著提升整體性能,如SA 算法在Wiki 數(shù)據(jù)集上可以達到53%的性能提升.對于可合并類算法MSSP,在UK 和LiveJ 數(shù)據(jù)集上,可實現(xiàn)24%和21%的性能提升;而對數(shù)據(jù)集Wiki 和EU,由于并發(fā)源頂點數(shù)目增大,此時性能收益可分別達到31%和33%.
針對各數(shù)據(jù)集上的不同算法,圖8 和圖9 分別匯報了最優(yōu)備份閾值對負載和通信的影響,即4.1 節(jié)中分析的因負載偏斜導致的水桶效應 φload以及因備份帶來的通信收益 φcom.需要注意的是,實際運行圖計算作業(yè)時,水桶效應和通信收益同時發(fā)生,兩者對運行時間的影響緊密耦合,無法精確測量各自的實際影響.故此處匯報的 φload與 φcom均為量化后的理論估算的運行時間(單位為s),以展示備份后的負載偏斜代價和通信收益,進而理解本文技術可加速圖計算過程的原理.
圖8 中,頂點備份對負載變化的影響是指計算過程中水桶效應拖慢的系統(tǒng)運行時間.LGraph 備份后的負載指標計算結果均為負,即備份后的負載均衡情況劣于備份前,對加速圖計算過程起反向作用.根據(jù)式(6),負載變化與拓撲結構和消息維度規(guī)模密切相關.從拓撲結構角度來看,Wiki 數(shù)據(jù)集由于出/入度偏斜指數(shù)相差較大,頂點的備份和邊的遷入遷出對其負載影響較大;而EU 數(shù)據(jù)集的高出/入度頂點較多且在各任務間的分布較為均衡,故備份對負載變化的影響較小.從消息維度角度來看,MSSP 由于并發(fā)源頂點數(shù)目多,導致消息和頂點值的字節(jié)數(shù)均大于其余2 個算法,因此其負載變化幅度通常是最大的.特別地,在LiveJ 數(shù)據(jù)集上,MSSP 算法的負載變化遠小于SA 算法.這是由于算法特性導致兩者的備份閾值不同.根據(jù)表7,MSSP 的備份閾值遠高于SA,導致MSSP 參與遷移的邊以及備份的頂點規(guī)模均較少,故負載變化較少.
Fig.8 Analysis on workload variation due to vertex replication圖8 頂點備份對負載變化的影響分析
Fig.9 Analysis on communication net benefit variation due to vertex replication圖9 頂點備份對通信凈收益變化的影響分析
Table 7 Comparison of Performance Improvement Between Actual and Predicted Optimal Replication Thresholds表7 實際與預測最優(yōu)備份閾值的性能提升對比
頂點備份對通信收益變化的影響是指計算過程中頂點備份加快的系統(tǒng)運行時間,以備份后產(chǎn)生的消息通信收益與引入備份頂點值的同步開銷之差作為最終的通信收益指標,圖9 展示了各算法的通信收益.對比圖8 和圖9 可以發(fā)現(xiàn),不同算法在各數(shù)據(jù)集上的負載變化與通信收益趨勢一致,即高負載偏斜會帶來較大的通信收益.其中,對于LiveJ 數(shù)據(jù)集上的MSSP 與SA 算法,由于MSSP 算法備份閾值較高,導致遷移邊的規(guī)模降低,故通信收益較少.綜合來看,通信收益與負載代價之差的變化位于3.64~63.26 s 之間,即輕量級頂點備份框架即使引起負載偏斜,仍能提高圖處理的整體性能.
本組實驗主要驗證備份閾值優(yōu)化模型的有效性以及所產(chǎn)生的額外開銷.
1)模型有效性.自適應優(yōu)化模型的有效性可通過2 個方面進行驗證,即公式 φload與 φcom對負載偏斜和通信收益估算的準確性以及最優(yōu)閾值選擇的準確性.φload的驗證方式為,通過在4 個數(shù)據(jù)集上運行SC,SA,MSSP 算法,首先手動詳細測試了不同備份閾值下LGraph 的實際表現(xiàn);對應地,為便于對比,將備份閾值優(yōu)化模型的輸出結果(即 φload與 φcom理論估算值)累加上無備份的HGraph 的運行結果,從而對備份框架的性能進行理論評估.φcom則通過對比手動選擇的最優(yōu)閾值與自適應模型計算的最優(yōu)閾值及其對應的LGraph 性能來驗證.
圖10 展示了φload與φcom的估算準確性驗證.隨著閾值的增加,算法在不同數(shù)據(jù)集上的運行時間一般呈先下降后上升趨勢,并最終達到甚至超過無備份的HGraph 運行時間.算法整體運行時間的變化,是通信收益與負載偏斜延遲之間相互作用的結果.前期,隨著閾值增大,參與備份的頂點(以及遷移的出邊)規(guī)模減少,導致通信收益降低,但同時負載偏斜程度也急劇下降,因此綜合性能收益為正;后期,隨著閾值持續(xù)增大,通信收益的損失遠大于負載偏斜的緩解,導致綜合性能收益為負,總運行時間呈持續(xù)上趨勢.注意到在大部分情況下,當閾值超過500 時,由于指向某一目的任務的最大出度超過500 的頂點數(shù)量極少,頂點備份產(chǎn)生的通信收益趨于0,LGraph的實際迭代性能在此時與HGraph 相當.特別地,對于EU 數(shù)據(jù)集上的SC 算法(圖10(d))和MSSP 算法(圖10(l)),由于高出度頂點較多,當閾值增大時,仍有大量出邊被遷移,但任務間的負載分布卻更為偏斜,導致通信收益無法抵消負載延遲開銷,使得LGraph實際性能甚至不如HGraph.此時的閾值分析模型雖不能很好地擬合實際性能表現(xiàn),但也可以預測出整體運行時間呈現(xiàn)上升趨勢,從而指導編程人員避免選擇較大的閾值.整體來看,圖10(a)~(l)表明自適應閾值分析模型可較好地擬合實際運行時間的變化趨勢,為最優(yōu)備份閾值選擇的準確性提供了保證.
表7 對比了實際手工測試得到的最優(yōu)閾值與分析模型計算得到的最優(yōu)閾值,以驗證最優(yōu)閾值自動選擇的準確性.表7 同時匯報了累加數(shù)據(jù)加載與劃分開銷后頂點備份對整個作業(yè)運行時間的優(yōu)化效果,即“性能提升”斜杠后面的內(nèi)容.顯然,閾值分析模型在UK 數(shù)據(jù)集上的SC 與MSSP 算法、LiveJ 數(shù)據(jù)集上的SA 算法、Wiki 數(shù)據(jù)集上的SC 與MSSP 算法均可以找到或近似找到最優(yōu)閾值;對于LiveJ 數(shù)據(jù)集上的SC 與MSSP 算法、Wiki 上的SA 算法和EU 上的SA算法,自動計算的最優(yōu)閾值與實測值相差較大,這是由于收益與延遲開銷的博弈接近臨界值,對各種參數(shù)的取值較為敏感,難以準確預測,但也因此導致最優(yōu)閾值周圍的性能變化幅度較?。ㄒ妶D10(b)(j)與圖(g)(h)),故即使閾值選擇偏差較大,實際的性能收益仍然接近手動選擇的最優(yōu)值.
Fig.10 The actual and predicted performance under different replication thresholds圖10 不同備份閾值下的實際和預測性能
需要注意的是,對于整個作業(yè)的運行時間問題,SC 與SA 算法均采用10 步迭代計算的時間之和.考慮到頂點備份過程內(nèi)嵌于數(shù)據(jù)加載與劃分階段,因此,啟動頂點備份功能后,系統(tǒng)的加載與劃分階段會引入額外的出邊遷移開銷.對比“性能提升”斜杠兩邊的內(nèi)容可以看到,即使備份機制在加載劃分階段引入了額外遷移開銷,但由于后續(xù)迭代過程中產(chǎn)生了巨大的通信收益,前者對綜合性能提升百分比的影響十分微小.以影響最大的Wiki-SA 組合為例,在手工測試的最優(yōu)閾值下,性能提升比例由53%下降到47.5%,僅產(chǎn)生了5.5%的影響;而在自適應閾值分析模型下,性能提升比例也僅有3%的差距,其綜合性能收益仍然十分可觀.
2)模型開銷.自適應性能優(yōu)化模型的開銷來源于預測所需參數(shù)的獲取,也即算法1 展示的第1 類參數(shù)的獲取過程.該過程的核心操作,是在給定的分布式任務數(shù)和數(shù)據(jù)集額外運行一次數(shù)據(jù)加載,并在加載過程中根據(jù)給定的候選閾值數(shù)組對不同閾值下的頂點分布以及出邊遷移情況進行參數(shù)值統(tǒng)計.圖11 展示了不同閾值粒度(即候選閾值數(shù)組長度)下的加載時間開銷.圖12~14 對應列出了3 種不同算法在不同粒度下閾值選擇的準確率.令 θs為模型選擇的最優(yōu)閾值,而 θ*為表7 中匯報的、通過多次手工調(diào)試所得的最優(yōu)閾值.選擇準確性的計算方式為 |θs-θ*|/θ*.結果顯示,輸入閾值數(shù)組的粒度與自適應性能優(yōu)化模型的統(tǒng)計開銷成反比,與最優(yōu)閾值選擇的準確性成正比.閾值粒度越細化,解析的參數(shù)越多,優(yōu)化模型對最優(yōu)閾值的預測結果越精細,利于找到最優(yōu)閾值;反之,最優(yōu)閾值的選擇偏差增大,但參數(shù)統(tǒng)計操作減少,加載延遲降低.
Fig.11 Latency analysis of loading data under different threshold granularities圖11 不同閾值粒度下的數(shù)據(jù)加載延遲分析
Fig.12 Accuracy analysis of selecting the optimal threshold under different threshold granularities for SC圖12 SC 在不同閾值粒度下的最優(yōu)閾值選擇準確率分析
Fig.13 Accuracy analysis of selecting the optimal threshold under different threshold granularities for SA圖13 SA 在不同閾值粒度下的最優(yōu)閾值選擇準確率分析
Fig.14 Accuracy analysis of selecting the optimal threshold under different threshold granularities for MSSP圖14 MSSP 在不同閾值粒度下的最優(yōu)閾值選擇準確率分析
綜合考慮加載延遲和選擇準確性,本文以2000為閾值運行優(yōu)化模型,以1.12~1.64 倍的延遲獲得較高的選擇準確率.此外,考慮到同一個數(shù)據(jù)集上的不同應用作業(yè)可共享參數(shù)統(tǒng)計結果,故該加載過程可視為離線操作,其開銷不計入實時的作業(yè)處理時間.
通信開銷一直是制約分布式圖處理性能提升的關鍵因素.本文從內(nèi)存和迭代性能上對現(xiàn)有HGraph系統(tǒng)進行了改進.具體地,本文首先對圖算法進行分類,指出多維消息類算法對通信和內(nèi)存的緊迫性要求,并以此為基礎在徹底合并系統(tǒng)上引入輕量級頂點備份框架,對系統(tǒng)的內(nèi)存開銷進行優(yōu)化.其次,提出了自適應性能優(yōu)化模型,對頂點參與備份或合并進行定量分析,并對出邊偏移閾值進行優(yōu)化.大量真實數(shù)據(jù)集的實驗結果表明,輕量級頂點備份框架在內(nèi)存和執(zhí)行時間方面,均優(yōu)于目前最新的處理平臺HGraph,自適應性能優(yōu)化模型對最優(yōu)備份閾值的選擇也表現(xiàn)出很好的適應性.
作者貢獻聲明:杜玉潔參與算法構思并負責完成實驗方案與論文初稿撰寫;王志剛提出了完整的算法框架并修改完成論文終稿;王寧參與了論文的審閱與格式校正;劉芯亦協(xié)助完成了相關工作調(diào)研與實驗數(shù)據(jù)整理;衣軍成完成了實驗數(shù)據(jù)集的收集與格式變換;聶婕與魏志強對論文內(nèi)容的邏輯布局進行了指導;谷峪與于戈對備份閾值的計算方式提出了指導意見并協(xié)助修改論文.