Googleではその超巨大なコンピュータネットワークを使って、データ処理が分散化されている。これにより、大量のデータを瞬時に処理することが可能になっている。この分散処理システムはMapReduceと呼ばれており、Googleの基盤を支えるコア技術の一つだ。

ピクチャ 65.png

処理状態を確認するコンソール

 

ごく小規模なシステムであればニーズは発生しないかも知れないが、数十台、数百台のコンピュータを結びつける上で分散化処理は欠かせない技術だ。そこでMapReduceをオープンソース実装したこちらを紹介しよう。

今回紹介するオープンソース・ソフトウェアはSkynet、Rubyで実装されたMapReduceのオープンソース実装だ。

Skynetは多数のワーカーを立ち上げ、それらが互いに監視し合うことで障害発生時にも柔軟にタスクの受け渡しが可能になっている。単一障害点はなく、マスタサーバという位置づけのものですら他のワーカーが補えるようになっている。

ピクチャ 66.png

ヘルプ

 

gemだけでインストールできるシンプルさが素晴らしく、データベースはMySQLが利用できる。また、Railsと連携させることや、モデルにてdistributed_findというメソッドを使って、処理内容をSkynetのワーカーに飛ばすといった操作ができる。

GoogleのMapReduceとの違いについては、Skynetはプログラムコードを送ることができない、マスタプロセスが存在しない点が挙げられている。中〜大規模なシステムを運用する上で重要なヒント、技術になりえるであろう分散化処理を知る上でSkynetは便利に使えそうだ。

 

space

 http://skynet.rubyforge.org/

RubyForge: Skynet Map/Reduce System: Project Info

 http://rubyforge.org/projects/skynet