Pocket

どうも。koglenです。
前回の「Hadoop」基礎学習につづいて環境動作の観点で学習したことを書いてみたいと思います。

本来であれば並列処理で「Hadoop」の負荷分散処理の妙技を味わいたいところですが、
今回はローカルPCに「Hadoop」をインストールしMapReduceのサンプルプログラムを実施してみたいと思います。
「Hadoop」はUnix環境で動作するため、Windows上で動作させるにはCygwinのインストールが必要になります。
ローカルPCには既にJavaはインストールされているため、Cygwinと「Hadoop」のインストールを行います。

Cygwinをインストールした後、「Hadoop」をCygwinをインストールした先のusr/local/配下にインストールして動作検証を行いました。
検証するプログラムはMapReduceのワードカウント処理で、対象として指定されたファイルやディレクトリ配下の出現するすべてのワードとその出現回数をカウントするプログラムです。
hoge.txtに以下のような文字列を記載しoutputフォルダにカウント結果を出力してみます。

■hoge.txt
hoge
abc def
ghi
jkl
mno pqe stu vwx
yz
hoge hoge

■実行コマンド
./bin/hadoop jar hadoop-mapred-examples-0.21.0.jar wordcount hoge.txt ./output

■コンソールログ
XX/XX/XX XX:XX:XX INFO mapreduce.Job: Counters: 18
FileInputFormatCounters
BYTES_READ=55
FileSystemCounters
FILE_BYTES_READ=504678
FILE_BYTES_WRITTEN=634892
Map-Reduce Framework
Combine input records=12
Combine output records=10
Failed Shuffles=0
GC time elapsed (ms)=17
Map input records=7
Map output bytes=98
Map output records=12
Merged Map outputs=0
Reduce input groups=10
Reduce input records=10
Reduce output records=10
Reduce shuffle bytes=0
Shuffled Maps =0
Spilled Records=20
SPLIT_RAW_BYTES=113

■結果ファイル
abc    1
def    1
ghi    1
hoge    3
jkl    1
mno    1
pqe    1
stu    1
vwx    1
yz    1

上記のように想定どおりの結果が返ってきました。
続いてはhoge.txtの最終行に1行追加しgrep処理を実施してみます。

■hoge.txt
hoge
abc def
ghi
jkl
mno pqe stu vwx
yz
hoge hoge
hogu hoga

■実行コマンド
bin/hadoop jar hadoop-mapred-examples-0.21.0.jar grep hoge.txt output2 ‘hog[a-z]’

■コンソールログ
XX/XX/XX XX:XX:XX INFO mapreduce.Job: Counters: 18
FileInputFormatCounters
BYTES_READ=149
FileSystemCounters
FILE_BYTES_READ=1327
FILE_BYTES_WRITTEN=253193
Map-Reduce Framework
Combine input records=0
Combine output records=0
Failed Shuffles=0
GC time elapsed (ms)=16
Map input records=3
Map output bytes=39
Map output records=3
Merged Map outputs=0
Reduce input groups=2
Reduce input records=3
Reduce output records=3
Reduce shuffle bytes=0
Shuffled Maps =0
Spilled Records=6
SPLIT_RAW_BYTES=138

■結果ファイル
3    hoge
1    hogu
1    hoga

こちらも想定通り。

「Hadoop」はOSと各種環境整備の関係から敷居が高いアーキテクチャーと感じていましたが、実際Windows上で簡単にサンプルを動かすことができました。
もっと本格的に勉強したいぞ!という方は、CDH(Cloudera’s Distribution for Hadoop)やAmazon EMR(Amazon Elastic MapReduce)などを利用されてみてはいかがでしょうか?