Python
hadoop
機械学習
hadoop-streaming

PythonでHadoopを実行するラッパー

More than 3 years have passed since last update.

Hadoopの機械学習をPythonでやりたい

Java以外でもHadoopのJobを書くことが出来るので、
機械学習に強いPythonをHadoopで実装できるようなSkipJackというラッパーをPythonもくもく会と正月で作りました。

GitHubは以下においています。(pipは無し)
GitHub-SkipJack

以下、詳細

  1. HadoopStreaming
  2. Scikit-learn
  3. SkipJack

HadoopStreaming

Hadoopでは、

という2つの実行方法があり、
標準入出力を扱える全ての言語でHadoopが使えます。(Hadoop Streaming)

なので、Hadoopで機械学習をするという理由だけでMahoutを使用する必要はなく、
機械学習に強いPythonを使って好きなライブラリで実装することができます。

Hadoopを用意する一通りの流れはHadoop導入とPythonによるMapReduceが参考になります。

Scikit-learn

Pythonで実装された一番メジャーな機械学習ライブラリです。
これを使用するためにはNumpy, Scipyもインストールする必要がありますが、pipだけでは簡単にインストールすることが出来ないので、
一通りのライブラリが元から入っているAnacondaの3系をダウンロードして、全スレーブに設置しました。

SkipJack

Hadoop Streaming ではhadoopの実行コマンドは手で打つ必要があり、面倒だったので
pythonを実行することで、

実行するJobを決定→Hadoop実行→結果評価→次に実行するJobを決定→以下、停止までループ

が出来るようなラッパーを作成しました。
mapperとreducer、結果評価の方法を実装すれば、定型作業を書く必要はありません。

中身は、
Hadoopコマンド(実行(run)、ファイル配置(put)、結果読み出し(cat))を実行しているだけの簡単なものです。

サンプルには、

  • WordCount+アルファ
  • グリッドサーチを使用した絞り込み

の2つを用意しています。