Mahout使用簡例

  • 剖析mahout腳本

mahout 位於$MAHOUT_HOME/bin目錄下,是所有mahout調用的入口。

主要會做各類環境變量的設置。

MAHOUT_JAVA_HOME:指定java的執行路勁,會覆蓋$JAVA_HOME

MAHOUT_HEAPSIZE   :JAVA運行堆棧的內存大小

HADOOP_CONF_DIR  : hadoop 配置文件路徑主要是*-site.xml這些文件的位置

MAHOUT_OPTS           : mahout運行時的java參數

MAHOUT_CONF_DIR    :類文件屬性文件所在文件,文件名是類名簡寫,默認位置$MAHOUT_HOME/src/conf

MAHOUT_LOCAL         : 設置是否本地運行,如果設置這個參數就不會運行hadoop了,一旦設置這個參數,那HADOOP_CONF_DIR HADOOP_HOME 這兩個參數的設置就自動失效了。

MAHOUT_CORE          :是否應用開發環境的core,還是發佈的core


參數-core                  指定引用包的路徑



  • 案例調用流程

要運行example的時候,最終的觸發語句如下:

exec"$HADOOP_BINARY" jar $MAHOUT_JOB $CLASS "$@"

1$HADOOP_BINARY 就是hadoop的執行文件

2$MAHOUT_JOB:  就是mahout-examples-*-job.jar 所在位置

3$CLASS   :      是默認的 org.apache.mahout.driver.MahoutDriver

4$@           :      就是要調用的class名字,比如org.apache.mahout.clustering.syntheticcontrol.kmeans.Job


三、對org.apache.mahout.driver.MahoutDriver

  1. 加載mapping文件:

加載driver.classes.props 文件,此文件要路徑應保存在classpath路徑上。

此屬性文件的內容,主要是一個全名稱的class名與簡寫class名的映射關鍵,並且還有class註釋說明。模板fully.qualified.class.name =shortJobName : descriptive string

比如:    org.apache.mahout.utils.vectors.VectorDumper= vectordump : Dump vectors from a sequence file to text

上面這個映射關係是從driver.classes.default.props文件找到的。

MahoutDriver會先加載driver.classes.props,如果沒有driver.classes.props這個文件。那就會加載driver.classes.default.props


  1. 加載類默認指定props文件:

文件名是<shortJobName>.props,具體類的屬性或參數文件。格式如下

i|input =/path/to/my/input

 o|output = /path/to/my/output

 m|jarFile = /path/to/jarFile

 # etc -each line is shortArg|longArg = value

  1. 剩餘參數解析

剩餘參數可以是在mapping文件中定義過的shortJobName,已經shortJobName類需要用到的參數,從命令行傳入的參數會覆蓋shortJobName.props中定義的參數。

如果在要運行vecDump這個類

  1. mapping文件中定義也就是driver.classes.props 或者driver.classes.default.props文件中定義:

org.apache.mahout.utils.vectors.VectorDumper= vecDump : dump vectors from a sequence file

全名稱類名    = 縮寫類名稱: 功能描述


  1. 定義vecdump.props文件

o|output = /tmp/vectorOut

s|seqFile = /my/vector/sequenceFile

  1. 運行指令

$MAHOUT_HOME/bin/mahoutrun vecDump -s /my/otherVector/sequenceFile

在命令行中的參數–s 會覆蓋vecdump.props中的定義的s參數


最終的執行指令參數爲

{"--output","/tmp/vectorOut", "-s","/my/otherVector/sequenceFile"}


  1. 如果還有其他參數需要傳入的話,就用-Dkey=value的形式





PS將工程導入eclipse中。

  1. 在導入前需要執行mvn eclipse:eclipse

  2. 將導入的功能右鍵選中pom.xml 執行mvn build 就可以編譯你修改過的內容了。

  3. 測試修改的內容,可以參考example中的shell腳本調用。需要注意的是需要設置MAHOUT_CORE-core 參數


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章