それで、Hadoop を入れて従来の処理がどれくらい速くなったかな、と思って@nokuno さんのWikipediaによるテキストマイニング入門で日本語版のWikipediaの単語頻度を数える問題をやっていたので、比較してみる。彼の設定では単語分かち書きまで済んだ状態でスタートして、そこから858分21秒かかったと書いてあるのだが、研究室のサーバ環境、つまり
- Quad-core Opteron (2.3GHz) x 8 CPU = 32 CPU コア+256GBのメモリのサーバが5台 (うち28 CPU コアを使用。4 CPU コアは他の人のために残しておく)
- Quad-core Xeon (2.66GHz, 3.0GHz) x 2 CPU = 8 CPU コア+32GBのメモリのサーバが4台 (こちらは 8 CPU コア全部使う)
の スレーブ計9台で、データを分散ファイルシステムに置いたところから試してみたところ、59秒で終了。ベースになっているマシンの速度が違うので単純に比 較はできないが、約900倍高速になっている。900倍と言うと数年間かかる実験が数日で終わる計算なので、実験もしやすいと思う。(参考までに、英語版 Wikipedia で単語の頻度をカウントした場合、5.8GB のデータで103秒であった) ちなみに、こういう単純な処理の速度は CPU コア数に比例するので、同じマシン上で比較すると約200倍高速になる程度であろう。まあ、200倍でも十分速いと思うが……。(@nokuno さん補足ありがとうございます)
研究室のサーバも CPU コア数こそ多いが速度がすごい速いわけではないし、研究室にもメモリこそ少ないが1スレッドならもっと速い計算機も何台かあるのだが、並列化でこれくらい 速くなるなら、並列化可能なタスクであればやる価値あるんじゃないかな? (もちろん、本来は1台でやるなら分散ファイルシステムに置く必要がないので、転送するところも時間に含めないといけないのだが、2.4GB の put は数十秒であった)
Hadoop で Wikipedia のテキスト処理を900倍高速化 - 生駒日記
分散処理好きなので、機会があればHadoop使いたいです。
Hadoopではないものですが、60台並列分散処理した時の快感は半端なかったです。笑
