Mahoutのインストールとサンプル実行

Hadoop上で動く機械学習ライブラリMahoutを入れてみる。

# yum -y install mahout
(省略)
====================================================================================================
 Package                 Arch     Version                                     Repository       Size
====================================================================================================
Installing:
 mahout                  noarch   0.9+cdh5.3.1+18-1.cdh5.3.1.p0.17.el6        cloudera-cdh5    64 M
Installing for dependencies:
 hadoop-0.20-mapreduce   x86_64   2.5.0+cdh5.3.1+791-1.cdh5.3.1.p0.17.el6     cloudera-cdh5    28 M
 hadoop-client           x86_64   2.5.0+cdh5.3.1+791-1.cdh5.3.1.p0.17.el6     cloudera-cdh5    31 k
 hbase                   x86_64   0.98.6+cdh5.3.1+74-1.cdh5.3.1.p0.17.el6     cloudera-cdh5    47 M

Transaction Summary
====================================================================================================
Install       4 Package(s)
(省略)

依存関係のあるパッケージも含めて完了。
hadoop-0.20-mapreduceがインストールされたのはちょっと気になる。
なぜMRv1に依存?YARNでは動かないということだろうか。

ただ、MRv1がインストールされてもJobTrackerやTaskTrackerはサービス登録されていない様子。もしこのまま動くならYARN上で動いているということに。

サンプルを動かしてみる。
とりあえず以下のサイトに載っているものを。
Mahoutで体感する機械学習の実践 第3回 Mahoutの環境構築とFP-Growthによるマーケットバスケット分析

$ wget http://image.gihyo.co.jp/assets/files/dev/serial/01/mahout/0003/gihyo-mahout-fpg-sample.csv

$ mahout fpg -i gihyo-mahout-fpg-sample.csv -o output/gihyo-mahout-fpg-sample
(省略)
15/02/25 23:20:00 WARN driver.MahoutDriver: Unable to add class: fpg
java.lang.ClassNotFoundException: fpg
(省略)

エラー。調べたところ、どうやらMahout 0.9からFP-Growthはなくなったらしい。
そんな簡単にアルゴリズムが消えるなんて、怖くて使えない。。。

仕方ないので、別のアルゴリズムのサンプルでも。
今度は以下のサイトのものを。

Mahoutで体感する機械学習の実践 第5回 K-MeansとCanopyクラスタリングでセグメンテーション分析を行う

$ wget http://image.gihyo.co.jp/assets/files/dev/serial/01/mahout/0005/gihyo-mahout-kmeans-sample.arff
$ mahout arff.vector --input gihyo-mahout-kmeans-sample.arff --output  gihyo-mahout-kmeans-sample.vector --dictOut gihyo-mahout-kmeans-sample.dict
$ mahout kmeans --input gihyo-mahout-kmeans-sample.vector --output gihyo-kmeans-output --maxIter 50 --numClusters 10 --clusters gihyo-kmeans-null-cluster --clustering -dm org.apache.mahout.common.distance.EuclideanDistanceMeasure
(省略)
15/02/26 00:14:39 INFO driver.MahoutDriver: Program took 684308 ms (Minutes: 11.405133333333334)

–maxIter(クラスタ重心点の最大計算回数)に50をセットしたせいか、MapReduceが33段も動いてえらく時間がかかった。でも、結局MRv1ではなくYARN上のMRv2で動いたよう。
出力結果を見てみる。

$ hadoop fs -ls -R gihyo-kmeans-output
(省略)
drwxr-xr-x   - take supergroup          0 2015-02-26 00:14 gihyo-kmeans-output/clusters-33-final
-rw-r--r--   1 take supergroup          0 2015-02-26 00:14 gihyo-kmeans-output/clusters-33-final/_SUCCESS
-rw-r--r--   1 take supergroup        194 2015-02-26 00:14 gihyo-kmeans-output/clusters-33-final/_policy
-rw-r--r--   1 take supergroup       2633 2015-02-26 00:14 gihyo-kmeans-output/clusters-33-final/part-r-00000
(省略)

finalが付いているのが最終出力らしい。
中身を見てみる。

$ mahout clusterdump --input gihyo-kmeans-output/clusters-33-final --output ./gihyo-kmeans-dump.txt
$ cat gihyo-kmeans-dump.txt
VL-699{n=92 c=[74.815, 69.804, 13.402] r=[13.741, 16.057, 9.035]}
VL-733{n=95 c=[23.189, 83.537, 25.747] r=[13.245, 11.736, 13.585]}
VL-124{n=103 c=[18.505, 75.049, 74.388] r=[11.747, 14.355, 14.764]}
VL-669{n=106 c=[21.613, 25.462, 24.311] r=[14.588, 14.396, 14.659]}
VL-992{n=93 c=[50.312, 45.806, 43.602] r=[11.221, 12.955, 11.853]}
VL-90{n=98 c=[23.133, 21.051, 79.714] r=[13.375, 13.353, 13.786]}
VL-172{n=104 c=[66.683, 72.288, 84.462] r=[16.433, 15.380, 10.757]}
VL-977{n=98 c=[80.327, 81.388, 49.092] r=[13.999, 12.359, 13.020]}
VL-329{n=105 c=[73.524, 21.086, 83.914] r=[14.420, 13.686, 11.711]}
VL-864{n=106 c=[79.698, 17.934, 31.972] r=[12.508, 12.466, 16.247]}

無事に動いたようなので今回はこれで終わり。

コメント

コメントする