2012-09-26 69 views
1
  1. 每次Kmeans迭代後,Hadoop是否會將輸出集羣存儲到HDFS中,並在下一次迭代中將它們提取到內存中?
  2. 映射器將觀察結果放入特定的簇中。我的意思是每個節點都必須知道所有的數據,並且hadoop只分配計算而不是數據,這樣每個節點都會給出某個節點的觀察集,對不對?

謝謝hadoop上的Kmeans

回答

0
  1. 是的,如果我們必須從一個MR作業傳送到另一個數據 - HDFS(或準確地說DFS)是唯一的選擇。這不是問題,因爲我們在這裏彙總了集羣的帶寬
  2. K均值聚類不需要將所有數據發送到所有節點 - 它具有非常高效的並行實現。 http://blog.data-miners.com/2008/02/mapreduce-and-k-means-clustering.html 總而言之,如果將行距離從本地可用組聚合到所有中心,然後將這些少量信息發送給集中處理,則其概念是聚合距離。
+0

非常感謝,你給的參考是非常有幫助的。 – user1687035

1

對於這樣的迭代處理Hadoop/MR,因爲存在一個開銷,因爲一次又一次地運行相同的工作,直到達到聚集點的收斂。 Hadoop比其他框架慢10倍,如下所述。

像K-Means一樣的迭代處理可以使用BSP高效且容易地完成。 Apache HamaApache Giraph都實施了BSP。 Apache Hama公開BSP原語時,Apache Giraph在內部使用BSP,主要用於圖形處理,但不公開BSP原語。

Google發佈了關於Pregel的大規模迭代處理的論文,他們使用BSP作爲基礎模型。

0

對於迭代算法,如KMeans,Hadoop和MR並不是很好的選擇,儘管它仍然可行。我有機會在Hadoop上實現馬爾科夫決策過程,這給我帶來了巨大的痛苦,因爲每次迭代都涉及磁盤IO,無論是輸入還是輸出。除此之外,在Hadoop集羣中啓動迭代(MR作業)需要數十秒的時間。

後來我試了一下Spark,這是一個像Hadoop一樣可以完美工作的MR框架。它使用羣集中所有商品計算機的內存來緩存迭代不變量,而不是反覆讀取和寫入磁盤。你可能想看看:-)