2008/12/02

楽天版MapReduce・HadoopはRubyを活用

楽天版MapReduce・HadoopはRubyを活用

フレームワークより、高速化のために使用しているアルゴリズムに惹かれた。

アルゴリズム面では、例えば嗜好の似たユーザーかどうかを判定するのに、「ローカリティ・センシティブ・ハッシング」(LSH:Locality Sensitive Hashing)というテクニックを使っているという。LSHを使うと、ユーザーの購買や評価の履歴が作る個別ベクトルの距離が小さい場合、高い確率でハッシュ値が一致するため、ベクトル間の距離をすべて計算せずに済むという。また、商品情報から辞書とマッチする言葉を抽出する際には検索関連で知られた技術「ダブル・アレイ・ツリー」(Double Array Trie)を使うことで高速化しているという。

ふむふむ。いつか参考にさせてもらおう。

後、高速化のためJRubyを採用しているのも面白い。

また今後はJava VM上で動くRuby処理系のJRubyへの対応も検討する。Cで書かれたオリジナルのRubyでは移植性を重視したためスレッド処理はネイティブスレッドに対応しない。このためマルチコアの恩恵を受けづらい。JRubyであれば処理の並列化が容易ではないかという。

Add-onな環境のほうが速度改善までの費用対効果が期待できるってのは皮肉な話だなぁ。

0 件のコメント: