Hadoop Streaming で手軽に Map Reduce する
研究で Hadoop Streaming を利用して負荷分散をしていますが、それなりに躓いた点もあったので、備忘録がてら簡単にまとめておきたいと思います。ちなみに、Map Reduce って何?って人はYahoo! Japan のブログ http://techblog.yahoo.co.jp/architecture/hadoop/、Hadoop Streamingって何?って人は、こちらの方のブログ http://blog.liris.org/2009/05/hadooppythonno.html がとてもわかりやすくまとめてくれています。
なぜPythonでもRubyでも動くのか
Hadoop Streamingを使えば、PythonやRubyなど、自分の好きな言語でMap Reduceのプログラムを書くことができます。内部ではJavaで実装されたMapper・Reducerが、UNIXコマンド "./mapper.py" を実行し、その結果をMapper・Reducerの出力として扱ってくれているためです。そのため、一行目には必ず "#!/usr/bin/python" といった、実行コマンドのフルパスを記述しておいてあげなければちゃんと動いてくれません。
Hadoop Streaming実行の主なコマンドオプション
オプション | 説明 |
---|---|
-mapper path/to/mapper | mapperの絶対パス |
-reducer path/to/reducer | reducerの絶対パス |
-combiner path/to/combiner | combinerの絶対パス |
-file path/to/file | mapper、reducer、combinerの絶対パスと、各プログラム中で呼び出す必要のある外部ファイルの絶対パス |
-D mapred.job.name="jobname" | ブラウザ上で表示する際のJobの名前 |
-D mapred.map.tasks=30 | mapperのタスク数の指定 |
-D mapred.reduce.tasks=30 | reducerのタスク数の指定 |
-D mapred.job.priority=HIGH | jobのpriorityの設定 |
よく利用するHadoopコマンド
コマンド | 説明 |
---|---|
hadoop fs -put ローカルファイル名 HDFS上でのファイル名 | HDFS上にファイルをアップロード |
hadoop fs -ls | HDFS上のファイルを確認 |
hadoop fs -rmr | HDFS上のファイルを削除 |
hadoop fs -get | HDFS上のファイルをダウンロード |
hadoop fs -cat | HDFS上のファイルをcat |
とりあえず実行してみる
とりあえず動いているところを試したければ、こちらに辞書中の単語に関してword countを行うプログラムを掲載しているので、git cloneしてHadoopの動く環境のあるサーバへ置いて下さい。下に同じプログラムを掲載しています。
HDFS上で実行する前に、プログラムが正しいかどうか確認する際は、以下のコマンドで確認できます。
cat sample.txt | ./mapper.py | ./reducer.py
小さいファイルで動くことを試せたら、自分のファイルをHDFS上へ上げてみましょう。
hadoop fs -put (ローカルのファイル名) (HDFS上でのファイル名)
実行のシェルスクリプトを自分の環境用に変更しましょう。変更点は以下の三点です。
hadoop_in=" ** path-to-hdfs-file ** " hadoop_out=" ** path-to-hdfs-file ** " options=$options" -file ** path-to-dic.json **"
ちなみに path-to-dic.jsonはローカル上の絶対パスなので、例えば/home/username/wordcount_streaming/dic.jsonなどになります。
辞書データなどを使わない場合はこの項目を消して下さい。
あとはsh run.shで実行すればプログラムが動作するはずです。
プログラムが終了したら、以下のコマンドで実行結果を確認しましょう。
hadoop fs -cat (hadoop_outのファイル名)/p* | less
Hadoop Streaming を利用した word count
- 作者: Tom White,Sky株式会社玉川竜司,兼田聖士
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/07/26
- メディア: 大型本
- この商品を含むブログ (2件) を見る