各種言語によるWordCountの速度比較で、Awkで連想配列を使ったバージョンが速かったので、JavaでHashMapを使ったバージョンを作ってみた。
すると、予想通り(データ量が少ないので実行速度の差は僅差だが)Java版の方が最速になった。
意外だったのは、単独環境と分散環境でHadoopの処理方式がだいぶ異なるようだ、ということ。
160MB程度のデータ量では、分散させずに単独環境で実行した方が速い!
以前『Hadoop Conference Japan 2011 秋』で御徒町さんが名古屋の流通業の事例で「分散しないHadoop」で動かしている(単独環境で動かした方が速い、データ量が増えてきたら分散させる、プログラム修正は要らないし)という話をしていたけど、(データ量次第だろうけど)その通りのようだ^^;
また、ヒープサイズ不足で落ちるかどうかというのも異なる。
単独環境で落ちなかったからと言って分散環境で大丈夫とは言えないようなので、油断は禁物。
(環境が違えば扱えるデータ量や速度に違いが出るのは当然だけど。チューニングは本番環境でやらないと意味が無いってやつですね(苦笑))