Hadoopがビッグデータ関連の書籍に記載されていたので実際に触ってみました。
まず、下調べとして、 Wiki を読んでから、次はクイックスタートを見ながら、実際に触ってみました。
インストール
rpmでバージョンは「1.0.2」をインストール。あとは、環境に応じて(Javaなど)。
起動準備設定
/etc/hadoop/hadoop-env.sh でJAVA_HOMEを設定する。
スタンドアロンモードで実行
スタンドアロンモードで実行してみる。しかし、OutOfMemoryが発生
java.lang.OutOfMemoryError: Java heap space
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:949)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212)
いろいろ調べてみるが、以下で解決。
/etc/hadoop/mapred-site.xml に以下を追加。(<configuration>の間)
<property>
<name>io.sort.mb</name>
<value>30</value>
</property>
以上で、以下を実行できるようになった。
/usr/bin/hadoop jar /usr/share/hadoop/hadoop-examples-1.0.2.jar grep input output ‘dfs[a-z.]+’
検証
まず、以下の2つのテキストファイルを準備。
$ head input/test*.txt
==> input/test1.txt <==
may
sunday
monday
==> input/test2.txt <==
saturday
info
sunday
wednesday
monday
friday
$
以下のコマンドで実行する。
$ /usr/bin/hadoop jar /usr/share/hadoop/hadoop-examples-1.0.2.jar wordcount input output
12/05/07 22:54:47 INFO util.NativeCodeLoader: Loaded the native-hadoop library
~中略~
12/05/07 22:54:57 INFO mapred.JobClient: Combine output records=9
12/05/07 22:54:57 INFO mapred.JobClient: Physical memory (bytes) snapshot=0
12/05/07 22:54:57 INFO mapred.JobClient: Reduce output records=7
12/05/07 22:54:57 INFO mapred.JobClient: Virtual memory (bytes) snapshot=0
12/05/07 22:54:57 INFO mapred.JobClient: Map output records=9
$
結果を見てみる。
$ cat output/part-r-00000
friday 1
info 1
may 1
monday 2
saturday 1
sunday 2
wednesday 1
$
OK!