Google圖算法引擎Pregel介紹

webphp 13年前發布 | 31K 次閱讀 Pregel

【前言:有一種說法[1]是Google的程序里面80%用的是MapReduce,20%用的是Pregel。今天就來介紹一下這個Pregel。想要深入研究的同志們,可以參考最新的SIGMOD 2010 ppt[2]。】

簡介

Pregel是一個用于分布式圖計算的計算框架,主要用于圖遍歷(BFS)、最短路徑(SSSP)、PageRank計算等等。共享內存的運行庫有很多,但是對于google來說,一臺機器早已經放不下需要計算的數據了,所以需要分布式的這樣一個計算環境。沒有Pregel之前,你可以選擇用 MapReduce來做,但是效率很低;你也可以用已有的并行圖算法庫Parallel BGL或者CGMgraph來做,但是這兩者又沒有容錯。所以google就自己開發了這個新的計算框架。

(八卦一下:Pregel的名字來歷很有意思。是為了紀念歐拉的七橋問題[7],七座橋就位于Pregel這條河上。)

核心概念

從高層次看,Pregel是BSP[8]模型,就是“計算”-“通信”-“同步”的模式,參看圖1。

  • 輸入輸出為有向圖
  • 分成超步
  • 以節點為中心計算,超步內每個節點執行自己的任務,執行節點的順序不確定
  • 兩個超步之間是通信階段
BSP Model

圖1: BSP Model

在Pregel中,以節點為中心計算。Step 0時每節點都活動著,每個節點主動“給停止投票”進入不活動狀態。如果接收到消息,則激活。沒有活動節點和消息時,整個算法結束。

Vetex State Machine

圖2: Vetex State Machine(參考2)

容錯是通過檢查點來做的。在每個超步開始的時候,對主從節點分別備份。

核心的概念就是這些,其他還有一些消息聚集(combiner)等優化。有興趣可以看看Lixiang的閱讀筆記[6]和Pregel Slides[2]。

類似開源實現

人人都喜歡免費。跟Pregel最像的是Hama[5],也是基于BSP,但是,開源的Hama還未成氣候。筆者原來打算拿它來做些實驗,結果還不能運行。

國內似乎還沒有類似Pregel的計算引擎,不知道百度和淘寶這些公司有沒有需求。淘寶最近9月份開源了他們的文件系統TFS[3][4],很敬仰。不知道上面的運行環境是不是在開發中。大宋的開源軟件也要有自己的創新,不能老是拿老外的改改就用了。

參考資料

1. Pregel: Google’s other data-processing infrastructure, http://www.royans.net/arch/pregel-googles-other-data-processing-infrastructure/

2. Pregel: A System for Large-Scale Graph Processing, SIGMOD 2010的ppt, http://www.slideshare.net/shatteredNirvana/pregel-a-system-for-largescale-graph-processing

3. 淘寶文件系統TFS開源代碼,http://code.taobao.org/project/view/366/

4.  淘寶文件系統TFS介紹,http://rdc.taobao.com/blog/cs/?p=128

5. Hama homepage, http://incubator.apache.org/hama/

6. 論文閱讀筆記:Google的圖模型分布式計算框架Pregel

7. Seven Bridges of Königsberg, http://en.wikipedia.org/wiki/Seven_Bridges_of_K%C3%B6nigsberg

8. http://en.wikipedia.org/wiki/Bulk_synchronous_parallel

轉自:http://www.tektalk.org/2010/12/03/google%E5%9B%BE%E7%AE%97%E6%B3%95%E5%BC%95%E6%93%8Epregel%E4%BB%8B%E7%BB%8D/

 本文由用戶 webphp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!