大資料圖資料庫之MapReduce用於圖計算

來源:互聯網
上載者:User

標籤:大資料   系統架構   圖資料庫   mapreduce   

/* 著作權聲明:可以任意轉載,轉載時請務必標明文章原始出處和作者資訊 .*/
                 CopyMiddle: 張俊林                    

               



節選自《大資料日知錄:架構與演算法》十四章,書籍目錄在此


1.使用Mapreduce進行圖計算

          使用MapReduce架構來針對大規模圖資料進行計算的研究工作相對較少,這主要歸結於兩方面原因:一方面,將傳統的圖計算映射為MapReduce任務相對其他類型的很多任務而言不太直觀;另一方面,從某種角度講,使用該分布計算架構解決圖計算任務也並非最適宜的解決方案。

     儘管有上述缺點,但很多圖演算法還是可以轉換為Mapreduce架構下的計算任務。下面以PageRank計算為例講述如何在該架構下進行圖計算。PageRank的計算原理在前面已有介紹,本節重點分析如何在Mapreduce架構下對演算法進行改造,使得可以用多機分布方式對大規模圖進行運算。

      Mapreduce架構下的輸入往往是key-value資料對,其中,value可以是簡單類型,比如數值或字串,也可以是複雜的資料結構,比如數組或者記錄等。對於圖資料來說,其內部表示方式以鄰接表為宜,這樣,輸入資料的key為圖節點ID,對應的value為複雜記錄,其中記載了鄰接表資料、key節點的PageRank值等。

      對很多圖演算法來說,Mapreduce內部計算過程中的Shuffle和Sort操作起到類似於通過圖中節點出邊進行訊息傳播的效果。從圖14-7的PageRank偽碼中可見此技巧的運用。

       在該例的Map操作中,輸入資料的key是圖節點ID,value是圖節點資料結構N,其中包括鄰接表AdjacencyList資訊以及節點對應的當前PageRank值。第3行代碼計算當前節點傳播到鄰接節點的PageRank分值,第5、6行代碼將這些分值轉換為新的key1-value1,以鄰接節點ID作為新的key,而從當前節點傳播給鄰接節點的分值作為新的value1。除此之外,還需要將當前節點的節點資訊繼續保留,以便進行後續的迭代過程,所以第4行代碼將輸入記錄本身再次原封不動地傳播出去。

       通過MapReduce內部的Shuffle和Sort操作,可以將相同key1對應的系列value1集中到一起,即將ID為key1的圖節點從其他節點傳入的PageRank部分分值彙總到一起,這起到了類似於訊息傳播的作用。圖14-7樣本裡的Reduce操作中,其對應的輸入資料包括圖節點ID以及對應的PageRank部分分值列表,偽碼第4行到第8行累積這部分分值形成新的PageRank值,同時判斷某個value1是否是節點資訊(第5行代碼)。第9行代碼則更新節點資訊內的PageRank值,而第10行代碼輸出更新後的節點資訊。這樣就完成了一輪PageRank迭代過程,而本次Reduce階段的輸出結果可以作為下一輪迭代Map階段的輸入資料。如此迴圈往複,直到滿足終止條件,即可輸出最終的計算結果。

 

       Mapreduce計算架構在Map操作後會通過網路通訊將具有相同key值的中間結果記錄映射到同一台機器上,以滿足後續Reduce階段操作的要求。一般情況下,這種網路傳輸資料量非常大,往往會嚴重影響計算效率,而Combine操作即為減少網路傳輸以最佳化效率而提出。Combine操作在本地機器Map操作後,首先將具有相同key值的Map結果資料value部分進行本地彙總,這樣本來應該分別傳輸的項目即被合并,大大減少了網路傳輸量,加快了計算速度。對於圖計算,同樣可以採用這種最佳化手段改善效率,圖14-8展示了相應的Combine操作,其運行流程與Reduce操作大體相似,第4行到第8行代碼累加相同key的本地value資料,第9行代碼將這種累加資料傳播出去,key保持不變,value成為彙總資料s,這樣就大量減少了網路傳輸量。

       上面介紹了如何在Mapreduce架構下進行PageRank計算,很多其他圖演算法也可用近似的思路處理,其關鍵點仍然是通過上述的Shuffle和Sort操作,將同一節點的入邊彙總到一起,而Reduce操作可以類似例中的部分數值求和,也可能是取邊中的Max/Min等其他類型的操作,這依據應用各異,但基本思想無較大的區別。


2.MapReduce在圖計算中存在的問題

        MapReduce儘管已經成為主流的分散式運算模型,但有其適用範圍,對於大量的機器學習資料採礦類科學計算和圖挖掘演算法來說,使用Mapreduce模型儘管經過變換也可以得到解決,但往往並非解決此類問題的最佳技術方案。根本原因在於:很多科學計算或者圖演算法內在機制上需要進行多輪反覆迭代,而如果採用Mapreduce模型,每一次迭代過程中產生的中間結果都需要反覆在Map階段寫入本地磁碟,在Reduce階段寫入GFS/HDFS檔案系統中,下一輪迭代一般是在上一輪迭代的計算結果的基礎上繼續進行,這樣需要再次將其載入入記憶體,計算得出新的中間結果後仍然寫入本地檔案系統以及GFS/HDFS檔案系統中。如此反覆,且不必要的磁碟輸入/輸出嚴重影響計算效率。除此之外,每次迭代都需要對任務重新進行初始化等任務管理開銷也非常影響效率。

       下面以Mapreduce模型計算圖的單源最短路徑的具體應用執行個體來說明此問題的嚴重性。所謂“單源最短路徑”,就是對於圖結構 G< N, E>( N為圖節點集合, E為圖中邊集合且邊具有權值,這個權值代表兩個節點間的距離),如果給定初始節點 V,需要計算圖中該節點到其他任意節點的最短距離是多少。這個例子的圖結構14-9所示,圖的內部表示採用鄰接表方案。假設從源節點A出發,求其他節點到節點A的最短距離,在初始化階段,設定源節點A的最短距離為0,其他節點的最短距離為 INF(足夠大的數值)。

      對Mapreduce模型來說,計算分為兩個階段,即Map階段和Reduce階段。針對上述問題,Map階段的最初輸入即為稍加改造的圖G的鄰接表,除了節點的鄰接表資訊外,還需要額外記載節點當前獲得的最小距離數值。以常見的key-value方式表示為:key=節點ID,value=<節點到源節點A的當前最小距離Dist,鄰接表>。以源節點A為例,其Map階段的輸入為:<A, <0, <(B, 10),(D, 5)>>>,其他節點輸入資料形式與此類似。

      Map階段對輸入資料的轉換邏輯為:計算key節點的鄰接表中節點到源節點A的當前最短距離。即將key-value轉換為key1-value1序列,這裡key1是key節點的鄰接表中節點ID,value1為key1節點到源節點A的當前最短距離。以源節點A為例,其輸入為<A, <0, <(B, 10), (D, 5)>>>,經過Map轉換後,得到輸出<B,10>和<D,5>,<B,10>的含義是:B節點到A節點的當前最短距離是10(由A節點到源節點A距離0加上B節點到A節點距離10獲得),<D,5>的含義與之類似。通過此步可以完成Map階段計算,圖14-10展示了原始輸入轉換為Map階段輸出結果對應的KV數值。

       在Map階段產生結果後,系統會將臨時結果寫入本地磁碟檔案中,以作為Reduce階段的輸入資料。Reduce階段的邏輯為:對某個節點來說,從眾多本節點到源節點A的距離中選擇最短的距離作為當前值。以節點B為例,從圖14-10中Map階段的輸出可以看出,以B為key有兩項:<B,10>和<B,inf>,取其最小值得到新的最短距離為10,則可輸出結果<B,<10,<(C,1),(D,2)>>>。圖14-11展示了Reduce階段的輸出。

      在Reduce階段結束後,系統將結果寫入GFS/HDFS檔案系統中,這樣完成了單源最短路徑的一輪計算。使得圖節點B和圖節點D的當前最短路徑獲得了更新。而為了能夠獲得最終的結果,還需要按照上述方式反覆迭代,以本輪Reduce輸出作為下一輪Map階段的輸入。由此可見,如果完成計算,則需要多次將中間結果往檔案系統輸出,這會嚴重影響系統效率。這是為何Mapreduce架構不適宜做圖應用的主要原因。





大資料圖資料庫之MapReduce用於圖計算

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.