Edited at

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つを用意しています。