一支Facebook 團(tuán)隊(duì)近期發(fā)表了一份比較報(bào)告,比較對(duì)象是他們當(dāng)前的基于 Giraph的圖處理系統(tǒng)和更新的 GraphX (它是流行的 Spark 框架的一部分)。他們的結(jié)論是,GraphX當(dāng)前無(wú)法滿足他們對(duì)擴(kuò)展性和性能的需要,不足以支撐起他們圖處理的負(fù)載。
在Facebook,大規(guī)模圖處理是數(shù)據(jù)設(shè)施服務(wù)的重要組成部分。他們的社會(huì)圖有1.71十億編輯頂點(diǎn)和數(shù)千億的邊,如果再把人們的愛好加進(jìn)來(lái)那么該圖就會(huì)有上十億條邊了。他們還有用于圖數(shù)據(jù)分析的大量應(yīng)用場(chǎng)景,包括通過(guò)智能數(shù)據(jù)分布和圖壓縮的網(wǎng)頁(yè)和群組推薦、基礎(chǔ)設(shè)施優(yōu)化。
該團(tuán)隊(duì)基于Apache Giraph搭建了一個(gè)圖分析平臺(tái),其在 VLDB '15 論文和一篇相應(yīng)的博客文章中曾被介紹過(guò)。該團(tuán)隊(duì)描述了它們尋找替代者的動(dòng)機(jī),他們是這樣寫的:
自從誕生以來(lái),Giraph已得到了持續(xù)的演進(jìn),不僅能簡(jiǎn)化用戶的編程,還能讓用戶可以處理Facebook級(jí)的生產(chǎn)負(fù)載。在這段期間,涌現(xiàn)出了大量的其他圖處理引擎。例如Spark框架,它是作為針對(duì)常規(guī)數(shù)據(jù)處理的平臺(tái)得以應(yīng)用的,此外它還提供了一個(gè)面向圖的編程模型和執(zhí)行引擎,即GraphX。
由于我們的目標(biāo)是盡可能選擇最佳方式處理內(nèi)部負(fù)載,所以我們決定對(duì)Giraph和GraphX進(jìn)行定量、定性的比較。
由于Facebook還有一個(gè)支撐生產(chǎn)負(fù)載的Spark cluster,所以他們決定比較一下這些圖數(shù)據(jù)處理系統(tǒng),看看這些系統(tǒng)處理大規(guī)模圖會(huì)怎樣。這項(xiàng)測(cè)試還可以看一下這兩個(gè)系統(tǒng)在不同的資源分配策略下是怎么執(zhí)行的,以及它們針對(duì)容錯(cuò)和用戶界面提供了什么類型的支持。他們還測(cè)試了其他的一些影響因素,包括在這兩個(gè)系統(tǒng)之間開始的可用性和易用性比較。
該測(cè)試方法涉及到三個(gè)在圖數(shù)據(jù)分析領(lǐng)域流行的算法: PageRank、Connected Components以及更多信息負(fù)載的 Triangle Counting。為了與最初的 GraphX論文形成對(duì)照,他們使用了相同的兩份公開可用的圖數(shù)據(jù)集開始的測(cè)試,它們分別是Twitter圖和英國(guó)網(wǎng)頁(yè)圖,前者有15億條邊,而后者有37億條邊。這項(xiàng)測(cè)試還包括一些人造圖數(shù)據(jù),它是使用Darwini圖生成工具生成的。該基礎(chǔ)軟件配置是 Spark 1.6.1 和 Giraph 1.2.0,JDK版本為1.8 (8u60)。
他們發(fā)現(xiàn)在通常情況下Giraph能夠更好地處理生產(chǎn)級(jí)負(fù)載,而Spark GraphX提供的幾個(gè)特性,能使圖數(shù)據(jù)處理解決方案的開發(fā)更簡(jiǎn)單。
該性能測(cè)試有如下關(guān)鍵發(fā)現(xiàn):
Giraph即使在較小規(guī)模的圖數(shù)據(jù)集上執(zhí)行得也更好些。Giraph的內(nèi)存使用也更加高效。GraphX支持以SQL樣式的查詢從Hive中讀取圖,支持任意列轉(zhuǎn)換。使用shell環(huán)境中的Scala是一種測(cè)試GraphX簡(jiǎn)單應(yīng)用的簡(jiǎn)便方式。最后,該團(tuán)隊(duì)總結(jié)說(shuō),GraphX不足以支持他們圖處理負(fù)載的擴(kuò)展性和性能需要。
基于對(duì)當(dāng)前結(jié)果的推測(cè),我們應(yīng)該需要訂購(gòu)更多數(shù)量級(jí)的機(jī)器去支持當(dāng)前的生產(chǎn)負(fù)載。除此之外,即使GraphX能處理該圖規(guī)模,其機(jī)器運(yùn)轉(zhuǎn)的時(shí)間也是效率方面很大的欠缺。然而,GraphX編程接口提供了許多簡(jiǎn)化應(yīng)用開發(fā)的特性,比如SQL集成。我們希望Giraph在未來(lái)也能添加上這些特性。
該團(tuán)隊(duì)已經(jīng)提供了重現(xiàn)本研究的相關(guān)細(xì)節(jié),以及相關(guān)代碼和數(shù)據(jù)。
查看英文原文:Graph Data Processing Systems at Facebook