2012-05-20 6 views
8

巨大なデータセットの接続コンポーネントを見つける必要があります。 (グラフが方向切れになっています)Hadoop/MapReduceを使用した接続コンポーネントの検索

明らかにMapReduceを選択してください。しかし、私はMapReduceを初心者にしていて、それを拾い読みして自分でコード化する時間が非常に短いです。

ソーシャルネットワーク分析の非常に一般的な問題であるため、既存のAPIがあるかどうか疑問に思っていましたか?

誰かが信頼できる(試されテストされた)ソースを知っていれば、少なくとも自分自身で実装を開始することができますか?

ありがとうございました

答えて

3

強く接続されたコンポーネントを見つける方法があるAPIが利用可能かどうかはわかりません。しかし、私はBFSアルゴリズムを実装して、ソースノードから他のすべてのノードまでの距離をグラフ内に見つけました(グラフは6,500万ノードという有向グラフでした)。

アイデアは、1回の反復で各ノードの近傍(1の距離)を探索し、距離が収束するまで縮小出力をマップに戻すことでした。マップは、各ノードから可能な最短距離を放出し、リストから最短距離でノードを更新する。

this outを確認することをお勧めします。また、this could help。これらの2つのリンクは、マップのパラダイムのグラフアルゴリズムについての基本的な考え方を提供します(すでに慣れていない場合)。基本的には、BFSではなくDFSを使用するアルゴリズムをねじる必要があります。

8

私は自分自身のためにそれについてブログ:

http://codingwiththomas.blogspot.de/2011/04/graph-exploration-with-hadoop-mapreduce.html

をしかし、MapReduceはこれらのグラフ分析もののために良いフィットではありません。 Apache Hamaは、BSP(バルク同期並列)を使用すると、Hadoop HDFSの上に優れたグラフAPIを提供します。また、Apacheの浜のためのBSP版はここで見つけることができます(Mindist検索)

https://github.com/thomasjungblut/tjungblut-graph/tree/master/src/de/jungblut/graph/mapreduce

https://github.com/thomasjungblut/tjungblut-graph/blob/master/src/de/jungblut/graph/bsp/MindistSearch.java

私はここでのMapReduceとの連結成分アルゴリズムを書きました実装はMapReduceほど困難ではなく、少なくとも10倍高速です。 興味のある方は、TRUNKの最新バージョンをチェックし、メーリングリストをご覧ください。

http://hama.apache.org/

http://apache.org/hama/mail-lists.html

+0

は、今のように、私は複雑さについては全く心配していませんよ。私はコンセプトの証明をしていますので、今はランニングタイムは問題になりません。私は実際には時間が足りないので、それを達成するために通常のJAVA/Cプログラミングに行くのではなく、ただ単に既存の実装を得ることを望んでいました。 Hadoop/MapReduce以外の方法は現在私が検索することはできません。 ありがとう – Shatu

+0

MapReduceでプロトタイプを作成していますか?面白い。ブログの私の解決策は、それがそこに立っているように機能し、それは私が知っている多くの人がテストしたものです。ためらうことはありません。 –

2

あなたは、カーネギーメロン大学からPegasus projectを見てみたいことがあります。 MapReduceを使用して、効率的で洗練された実装を提供します。バイナリ、サンプル、非常に詳細なドキュメントも提供しています。

実装自体は、U Kangが2009年に提案した一般化反復行列 - ベクトル乗算(GIM-V)に基づいています。

PEGASUS: A Peta-Scale Graph Mining System - 実装と 観測データマイニングの IEEE国際会議(ICDM 2009)

でUカン、Charalampos E. Tsourakakis、クリストス・ファラウトソスEDIT:公式の実装は、実際に制限され 2.1億ノード(ノードIDは整数として格納されます)。私はgithub(https://github.com/placeiq/pegasus)にフォークを作成して、私のパッチやその他の拡張機能(例えばスナッピー圧縮)を共有しています。

0

少し古い質問ですが、ここにチェックアウトしたいものがあります。 Sparkプラットフォーム上でmap-reduceを使用して接続コンポーネントを実装しました。

https://github.com/kwartile/connected-component

関連する問題