衆所周知,mahout是基于hadoop分布式系統的,要想看懂mahout的源碼,首先得明白mahout是如何使用hadoop的!
首先,在我的<<hadoop運作原理詳解>>一篇中,詳細介紹了hadoop的運作機制,這裡就不多說了!下面我就以kmeans聚類算法為例,講講mahout如何利用hadoop實作資料挖掘算法并行化.如以下類圖所示,

該圖描述了整個mahout實作kmeans算法的架構圖,首先kmeanscluster繼承cluster,在kmeanscluster中有幾個比較重要的方法,首先clusterpoints()是實作kmeans聚類算法的方法,而其中調用了runkmeansiteration()方法,該方法是單次聚類疊代方法.
尤其可見,這塊算法實作和普通kmeans算法沒有太大差别!在mahout針對每個算法都有一個driver,這個東西是幹什麼的啊?
我們先看看kmeansdriver源碼,kmeansdriver繼承了abstractjob.我們知道hadoop上的任務都是以job的形式啟動的!我們要使用某個算法進行一項資料挖掘工作,是以就要啟動一個job.是以,kmeansdriver就是建立一個job,然後對job的屬性進行配置,然後運作該job.
上圖反映了kmeansdriver工作原理.