「Pregel」はグラフ問題に特化したソリューションとしてグーグル社で開発され、「Bulk Synchronous Parallel(BSP、バルク同期並列)」の概念を用います。PregelでSSSP問題をどのように解決できるかを見ていきます。
BSPは並列アルゴリズムを実行するための計算モデルで、「superstep」という処理単位を繰り返し実施し、分散環境で問題を解決する概念です。
Pregelの考えで、SSSP問題を解決する際の都市間でのデータ授受の流れ(BSPの各superstepにおける処理)を示します(分散環境では、各都市の処理は異なったプロセッサで処理され、スケーラブルな構成になります)。
単純なMapReduceでのデータ授受の流れと比較しますと、同じような考え方に基づきますが、都市間のグラフ構造に関するデータの授受および繰り返し処理の収束判断の実装が不要となり、処理が効率的に行われることが期待できます。
では、このPregelは、どのように使えばいいいのでしょうか? 残念ながらPregelは非公開ですので、使用はできません。しかし、この考えを実装したオープンソースとして、以下の2つが存在します。
このうち今回は、Hadoop環境上で稼働するGiraphに着目します。
ほかに興味深いソリューションとしては、「Hama」があります。Hamaは汎用のBSPを実装し、グラフ問題に特化していないので、今回は紹介の対象から外しています
なお、「[#HAMA-409] Add Pregel-like API - ASF JIRA」によればPregelの実装も検討されているようです。
GiraphでのSSSP問題の解決を見ていくことにより、グラフ問題を効率的に取り扱えることを示します。
なおGiraphについては、Hadoop Summit 2011の「Giraph:Large-scale graph processing infrastructure on Hadoop」で紹介されているので、参照してみてください。
次ページでは、いよいよGiraphの処理をコードで見たり、実際に動かします。
Copyright © ITmedia, Inc. All Rights Reserved.