開源圖計算框架GraphLab介紹

GraphLab介紹

GraphLab 是由CMU(卡內基梅隆大學)的Select 實驗室在2010 年提出的一個基於圖像處理模型的開源圖計算框架。框架使用C++語言開發實現。

該框架是面向機器學習(ML)的流處理並行計算框架,可以運行在多處理機的單機系統、集群或是亞馬遜的EC2 等多種環境下。框架的設計目標是,像MapReduce一樣高度抽象。可以高效運行與機器學習相關的、具有稀疏的計算依賴特性的迭代性算法,並且保證計算過程中數據的高度一致性和高效的並行計算性能。該框架最初是為處理大規模機器學習任務而開發的,可是該框架也相同適用於很多數據挖掘方面的計算任務。在並行圖計算領域,該框架在性能上高出非常多其它並行計算框架(比如,MapReduce、Mahout)幾個數量級。GraphLab 自成立以來就是一個發展非常迅速的開源項目,其用戶涉及的範圍也相當廣泛,全球有2 000 多個企業、機構使用GraphLab。

開源圖計算框架GraphLab介紹

GraphLab

GraphLab的優點

GraphLab 作為一個基於圖處理的並行計算框架,可以高效地運行機器學習相關的數據依賴性強,迭代型算法。其設計具有例如以下特點和長處。

  1. 統一的API 接口。對於多核處理器和分佈式環境,採用統一的API 接口,一次編敲代碼就可以高效地運行在共享內存環境或者分佈式集群上。
  2. 高性能。優化C++運行引擎,在大量多線程操作和同步I/O 操作之間進行了非常好的平衡。
  3. 可伸縮性強。GraphLab 可以智能地選擇存儲和計算的節點,原因是GraphLab 對於數據的存儲與計算都使用了精心設計的優良算法。
  4. 集成HDFS。GraphLab 內置對HDFS 的支持。GraphLab 可以直接從HDFS中讀數據或者將計算結果數據直接寫入到HDFS 中。
  5. 功能強大的機器學習類工具集。GraphLab 在自身提供的API 接口之上實現了大量的開箱即用的工具集。

GraphLab框架

開源圖計算框架GraphLab介紹

GraphLab框架

Graph Based Data Representation:GraphLab將圖切成若干子圖分佈式存儲,其中ghost vertex是子圖之間的邊界點,其上存儲了鄰接結構以及remote數據的副本,子圖之間也是有通信的,因此disk數據共享做備份很困難。

Update Functions:採用的是Asynchronously Dynamic Update,這種動態計算的主要思想是根據vertex的priority更新,每臺機器上都有一個優先隊列,每次迭代中如果當前vertex變化量不大的話就不再將該點的scope(一步可達的點)入隊了,ghost頂點不需要入隊。改進空間:可以用排隊論優先。

Data consistency:需要保證Race-Free Code,如果計算overlap發生搶跑,就會產生一致性問題。GraphLab在data consistency這方面是最靈活的框架。Edge consistency的思想是one vertex apart的Update Functions才可以並行,而Overlapping regions是隻讀的。

Fault tolerance:GraphLab在這方面做的還不是很好,主要是Chandy-Lamport的asynchronous snapshotting algorithm。


分享到:


相關文章: