1. 程式人生 > >Spark MLlib介紹

Spark MLlib介紹

常用 技術分享 機器學習 mach 同時 ssi bsp 需要 回歸

Spark MLlib介紹

Spark之所以在機器學習方面具有得天獨厚的優勢,有以下幾點原因:

(1)機器學習算法一般都有很多個步驟叠代計算的過程,機器學習的計算需要在多次叠代後獲得足夠小的誤差或者足夠收斂才會停止,叠代時如果使用Hadoop的MapReduce計算框架,每次計算都要讀/寫磁盤以及任務的啟動等工作,這回導致非常大的I/O和CPU消耗。而Spark基於內存的計算模型天生就擅長叠代計算,多個步驟計算直接在內存中完成,只有在必要時才會操作磁盤和網絡,所以說Spark正是機器學習的理想的平臺。

(2)從通信的角度講,如果使用Hadoop的MapReduce計算框架,JobTracker和TaskTracker之間由於是通過heartbeat的方式來進行的通信和傳遞數據,會導致非常慢的執行速度,而Spark具有出色而高效的Akka和Netty通信系統,通信效率極高。

MLlib(Machine Learnig lib) 是Spark對常用的機器學習算法的實現庫,同時包括相關的測試和數據生成器。Spark的設計初衷就是為了支持一些叠代的Job, 這正好符合很多機器學習算法的特點。在Spark官方首頁中展示了Logistic Regression算法在Spark和Hadoop中運行的性能比較,如圖下圖所示。

技術分享

技術分享

可以看出在Logistic Regression的運算場景下,Spark比Hadoop快了100倍以上!

MLlib目前支持4種常見的機器學習問題: 分類、回歸、聚類和協同過濾,MLlib在Spark整個生態系統中的位置如圖下圖所示。

MLlib基於RDD,天生就可以與Spark SQL、GraphX、Spark Streaming無縫集成,以RDD為基石,4個子框架可聯手構建大數據計算中心!

MLlib是MLBase一部分,其中MLBase分為四部分:MLlib、MLI、ML Optimizer和MLRuntime。

l ML Optimizer會選擇它認為最適合的已經在內部實現好了的機器學習算法和相關參數,來處理用戶輸入的數據,並返回模型或別的幫助分析的結果;

l MLI 是一個進行特征抽取和高級ML編程抽象的算法實現的API或平臺;

l MLlib是Spark實現一些常見的機器學習算法和實用程序,包括分類、回歸、聚類、協同過濾、降維以及底層優化,該算法可以進行可擴充; MLRuntime 基於Spark計算框架,將Spark的分布式計算應用到機器學習領域。

3.2 MLlib的算法庫分析

下圖是MLlib算法庫的核心內容。

技術分享

Spark MLlib介紹