利用Mahout實現在Hadoop上運行K-Means算法

jopen 10年前發布 | 72K 次閱讀 Mahout Hadoop 算法

一、介紹Mahout

    Mahout是Apache下的開源機器學習軟件包,目前實現的機器學習算法主要包含有協同過濾/推薦引擎聚類分類三 個部分。Mahout從設計開始就旨在建立可擴展的機器學習軟件包,用于處理大數據機器學習的問題,當你正在研究的數據量大到不能在一臺機器上運行時,就 可以選擇使用Mahout,讓你的數據在Hadoop集群的進行分析。Mahout某些部分的實現直接創建在Hadoop之上,這就使得其具有進行大數據 處理的能力,也是Mahout最大的優勢所在。相比較于WekaRapidMiner等 圖形化的機器學習軟件,Mahout只提供機器學習的程序包(library),不提供用戶圖形界面,并且Mahout并不包含所有的機器學習算法實現, 這一點可以算得上是她的一個劣勢,但前面提到過Mahout并不是“又一個機器學習軟件”,而是要成為一個“可擴展的用于處理大數據的機器學習軟件”,但 是我相信會有越來越多的機器學習算法會在Mahout上面實現。[1]

    二、介紹K-Means

    https://cwiki.apache.org/confluence/display/MAHOUT/K-Means+Clustering#,這是Apache官網上的算法描述,簡單來說就是基于劃分的聚類算法,把n個對象分為k個簇,以使簇內具有較高的相似度。相似度的計算根據一個簇中對象的平均值來進行。[2]

    三、在Hadoop上實現運行

    1,實驗環境

        ①hadoop集群環境:1.2.1 一個Master,兩個Slaves,在開始運行kmeans時啟動hadoop

        ②操作系統:所有機器的系統均為ubuntu12.04

        ③Mahout版本:采用的是0.5版

    2,數據準備

        數據采用的是http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data, 這是網上提供的一個比較不錯是數據源。然后用指令 hadoop fs -put /home/hadoop/Desktop/data testdata,將在我桌面的文件data上傳到HDFS的testdata目錄下,這里為什么是testdata,我也正在思考,因為我本來是上傳到 input里,但是運行時提示could not find ….user/testdata之類的,所以現改為了testdata。

    3,運行

        ①配置Mahout環境:在Apache官網下載Mahout的版本,我選擇的是0.5,下載地址:https://cwiki.apache.org/confluence/display/MAHOUT/Downloads。然后解壓到你指定的目錄,將此目錄路徑寫入/etc/profile,添加如下語句:

export MAHOUT_HOME=/home/hadoop/hadoop-1.2.1/mahout-distribution-0.5

export HADOOP_CONF_DIR=/home/hadoop/hadoop-1.2.1/conf

export PATH=$PATH:/home/hadoop/hadoop-1.2.1/bin:$MAHOUT_HOME/bin

然后執行 source /etc/profile。在mahout目錄下執行bin/mahout命令,檢測系統是否安裝成功。如圖:

利用Mahout實現在Hadoop上運行K-Means算法

注:此處修改環境變量有些網上提示是/etc/bash.bashrc,我也試著修改過,但是發現在我這里使環境變量生效的是profile。

②運行Mahout里自帶的K-Means算法,bin/mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job,這里啟動后遇到了一點問題,提示 Could not find math.vector,后來參考這篇http://jerrylead.iteye.com/blog/1188929日志解決。

    4,結果

       在我的環境下運行5分鐘左右,最后生成一個文件,如圖

利用Mahout實現在Hadoop上運行K-Means算法

    四、總結

Mahout是一個很強大的數據挖掘工具,需要進行更深層的了解。

 

    五、參考文獻

        [1].Mahout與聚類分析    http://yoyzhou.github.io/blog/2013/05/26/clustering-with-mahout/

        出處: http://hanlaiming.freetzi.com/?p=144

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!