十分鐘了解分布式計算 GraphLab

2021-06-26 15:41:47 字數 1956 閱讀 5402

graphlab是乙個面向大規模機器學習/圖計算的分布式記憶體計算框架,由cmu在2023年開始的乙個c++專案,這裡的內容是基於**

low, yucheng, et al. "distributed graphlab: a framework for machine learning in the cloud" proceedings of the vldb endowment 5.8 (2012)[ppt]

後續會介紹graphlab加強版powergraph (v. 2.2)的內容,並介紹其在spark平台上的轉殖graphx。

graph計算的背景

graph可以刻畫的範圍是很廣的,使用者和商品之間的關係是乙個典型的二部圖,pagerank的random walk也是一張圖

graph database(neo4j,titan,flockdb)是用於圖資料的儲存檢索,而涉及到複雜的graph processing,就適合用graphlab做。

graph計算的特點

dependency graph:mapreduce對於大的data並行任務(feature extraction/cross validation)是適用的,但data並行系統很難刻畫data之間的依賴關係,而這一點在機器學習(gibbs sampling,變分法,pagerank,coem,collaborative filtering等)中非常重要。

local updates:在graph並行系統中,乙個結點的值只受相鄰結點的影響,因此可以根據區域性值就可以做更新。而在data並行系統中是沒有local updates的概念的,local資訊可以加快計算,不同local之間可以做並行。

iterative computation:和普通map-reduce任務不同,圖計算天然涉及到迭代計算。更新結點a的時候,對其所有鄰居(包括鄰居結點b)map,再reduce所有鄰居的結果,用得到的值來update結點a的值。然後就可以用結點a的最新值去更新他的結點b了。

graphlab框架

graph based data representation:graphlab將圖切成若干子圖分布式儲存,其中ghost vertex是子圖之間的邊界點,其上儲存了鄰接結構以及remote資料的副本,子圖之間也是有通訊的,因此disk資料共享做備份很困難。

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

fault tolerance:graphlab在這方面做的還不是很好,主要是chandy-lamport的asynchronous snapshotting algorithm。

課間十分鐘

時間限制 1000 ms 記憶體限制 128 mb 兩人都是數學愛好者,便發明了乙個遊戲。在遊戲開始前,他們先約定乙個正整數n,同時令m 1。遊戲過程中,每個人都可以將m的值擴大2到9中的任意倍數。第乙個使m n的人就是最後的贏家。181818181818和zbt都十分聰明,並且遊戲過程中都使用最佳...

十分鐘看懂時序資料庫(V) 分布式計算

前文提到資料查詢特別是大資料量的聚合分析查詢是時序資料庫需要解決的乙個主要問題,之前的文章介紹了通過預處理資料的方法,用空間換時間的思路,降低了大資料量聚合分析的延時。本文將從分布式計算方向思考,從併發的角度介紹時序資料庫如何降低資料查詢的延時。1.單機時序資料的聚合計算 我們先來看看單機是如何支援...

十分鐘的代價

2008年9月15日上午10 00,擁有158年歷史的美國第四大投資銀行 雷曼兄弟公司向法院申請破產保護,訊息轉瞬間通過電視 廣播和網路傳遍地球的各個角落。令人匪夷所思的是,在如此重大的情況下,德國國家發展銀行在十分鐘後,居然按照外匯掉期協議的交易,通過計算機自動付款系統,向雷曼兄弟公司即將凍結的銀...