图计算-Pregel-Hama
一.圖計(jì)算簡(jiǎn)介
1.1 圖計(jì)算是專門針對(duì)圖結(jié)構(gòu)數(shù)據(jù)的處理.
- 許多大數(shù)據(jù)都是以大規(guī)模圖或網(wǎng)絡(luò)的形式呈現(xiàn);
- 許多非圖結(jié)構(gòu)的大數(shù)據(jù),也常常被轉(zhuǎn)換為圖模型后進(jìn)行分析;
- 圖結(jié)構(gòu)很好地表達(dá)了數(shù)據(jù)之間的關(guān)聯(lián)性;
- 關(guān)聯(lián)性計(jì)算是大數(shù)據(jù)計(jì)算的核心------通過獲得數(shù)據(jù)的關(guān)聯(lián)性,可以從噪音很多的海量數(shù)據(jù)中抽取有用的信息;
1.2 傳統(tǒng)的圖計(jì)算算法存在典型問題
- 常常表現(xiàn)出比較差的內(nèi)存訪問局部性;
- 針對(duì)單個(gè)節(jié)點(diǎn)的處理工作過少;
- 計(jì)算過程中伴隨著并行度的改變;
1.3 解決方案
- 為特定的圖應(yīng)用定制相應(yīng)的分布式實(shí)現(xiàn),通用性不好;
- 基于現(xiàn)有的分布式計(jì)算平臺(tái)進(jìn)行圖計(jì)算;
- 使用單機(jī)的圖算法庫:BGL,LEAD,NetworkX,JDSL,Standford GraphBase 和FGL等,對(duì)于大規(guī)模計(jì)算能力有限.
- 使用已有的并行圖計(jì)算系統(tǒng):Parallel BGL 和CGM Graph ,實(shí)現(xiàn)了很多并行圖算法,存在容錯(cuò)性問題;
1.4 MapReduce 是分布式計(jì)算平臺(tái).
- MapReduce 在圖計(jì)算方面的性能和易用性不好,是粗粒度的計(jì)算,以塊為單位進(jìn)行數(shù)據(jù)分析;
1.5 通用的圖計(jì)算軟件
- 基于遍歷算法的,實(shí)時(shí)的圖數(shù)據(jù)庫;如,Neo4j,OrientDB,DEX,Infinite Graph;
- 以圖頂點(diǎn)為中心的,基于消息傳遞批處理的并行引擎;如,GoldenOrb,Giraph,Pregel,Hama;
- 共同特點(diǎn):BSP 模型;
- BSP(Bulk Synchronous Parallel Computing Mode) 模型叫整體同步并行計(jì)算模型或者簡(jiǎn)稱為大同步模型.
- BSP(Bulk Synchronous Parallel Computing Mode) 模型叫整體同步并行計(jì)算模型或者簡(jiǎn)稱為大同步模型.
二. Pregel
2.1 簡(jiǎn)介
1.Pregel 是谷歌公司發(fā)布的一款商業(yè)圖計(jì)算產(chǎn)品;
- Caffeine:快速用于大規(guī)模網(wǎng)頁索引的構(gòu)建;
- Dremel:實(shí)時(shí)性的交互分析產(chǎn)品,是一種只讀嵌套數(shù)據(jù)的分析,支持分析PB 級(jí)別的數(shù)據(jù);
- Pregel:基于BSP 模型實(shí)現(xiàn)的并行圖計(jì)算系統(tǒng);
2.2 Pregel 圖計(jì)算模型
1.有向圖和頂點(diǎn)
2.傳遞消息的基本方法
- 遠(yuǎn)程讀取;
- 基于共享內(nèi)存;
- 基于消息傳遞模型;
3.Pergel 采用消息傳遞模型主要基于以下兩個(gè)原因:
- 遠(yuǎn)程讀取具有較高的延遲,如MapReduce;
- 消息傳遞采用的是異步的批量的方式傳遞,延遲低;
4.Pregel 的計(jì)算過程
5.頂點(diǎn)的狀態(tài)
6.Pregel 實(shí)例
2.3 Pregel C++ API
-
定義基類Vertex
-
消息傳遞機(jī)制和Combiner
頂點(diǎn)之間的通訊是通過消息傳遞機(jī)制來實(shí)現(xiàn)的,每條消息包含了消息值和需要到達(dá)的目標(biāo)頂點(diǎn)ID.
在一個(gè)超步S 中,一個(gè)頂點(diǎn)可以發(fā)送任意數(shù)量的消息,這些消息將在下一個(gè)超步(s+1)中被其他頂點(diǎn)接收.
Combiner:
-
Aggregator,拓?fù)涓淖兒洼斎胼敵?/strong>
- 可以通過Aggregator實(shí)現(xiàn)全局協(xié)調(diào)功能;
拓?fù)涓淖?/strong>:
輸入輸出:
2.3 Pregel體系結(jié)構(gòu)
1.Pregel執(zhí)行過程
- 用戶程序的執(zhí)行過程:
- 選擇集群中的多臺(tái)機(jī)器執(zhí)行圖計(jì)算任務(wù),有一臺(tái)及其會(huì)被選為Master 其他機(jī)器作為Worker;
- Master把一個(gè)圖分成多個(gè)分區(qū),并把分區(qū)分配到多個(gè)Worker,一個(gè)Worker會(huì)領(lǐng)到一個(gè)或多個(gè)分區(qū),每個(gè)Worker知道所有其他Worker所分配到的分區(qū)情況;
2.容錯(cuò)性
3.Worker,Master和Aggregator
-
worker : 一般在執(zhí)行過程中它的信息保存在內(nèi)存當(dāng)中,頂點(diǎn)當(dāng)前的值,出射邊列表,消息隊(duì)列,標(biāo)志位;worker會(huì)對(duì)自己所管轄的分區(qū)中的每個(gè)頂點(diǎn)進(jìn)行遍歷,并調(diào)用頂點(diǎn)上的Compute() 函數(shù),Computer 函數(shù)接收頂點(diǎn)當(dāng)前值,消息迭代器和出射邊迭代器三個(gè)參數(shù);
保存兩份,一份用于當(dāng)前超步,一份用于下一個(gè)超步.
-
Master:
4.Pregel的應(yīng)用實(shí)例------單源最短路徑
三.Hama的安轉(zhuǎn)使用
3.1 Hama 簡(jiǎn)介
總結(jié)
以上是生活随笔為你收集整理的图计算-Pregel-Hama的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux网络编程——boa移植
- 下一篇: 中缀表达式转换为前缀或后缀表达式的手工做