2012-01-19 20 views
0

mapreduceでPageRankを実装しようとしているときに質問があります。 ここにコードを引用して、問題を説明するhttps://stackoverflow.com/a/5029780/1117436とします。上記のプロセスでmapreduceでページランクを計算するときの反復方法

map ((url,PR), out_links) //PR = random at start 
for link in out_links 
    emit(link, ((PR/size(out_links)), url)) 

reduce(url, List[(weight, url)): 
    PR =0 
    for v in weights 
    PR = PR + v 
    Set urls = all urls from list 

emit((url, PR), urls) 

、それは地図手続きの入力の2番目のパラメータはURLからのリンクであるが、削減手順の出力の2番目のパラメータは、URLの中のリンクであると思われることを明確です。では、これらのコードはどのように反復して動作しますか?

次に、ページランクのアルゴリズムが正しく動作するようにコードを書く方法を教えてください。

更新:この回答は私の問題を解決すると思います。 https://stackoverflow.com/a/13568286/1117436

答えて

0

すでにグラフ処理フレームワークがいくつかあります。

グラフ処理に使用できるApache Giraphをご覧ください。 GiraphはMRに基づいています。 GoldenOrbは非常に早い段階にあります。またApache Hamaの実装であるBSPを見てください。これは独自の計算エンジンを持ち、MRベースではありませんが、ストレージにHDFSを使用しています。浜はグラフ処理のためにusedになることもできます。

+0

ありがとうございますが、私はちょうどpagerankアルゴリズムでお互いにマップの縮小と入力の出力を行う方法を知りたいです。 –

1

MapReduceを使用して反復アルゴリズムを実装することはできますが、最適な方法ではない可能性があります(各繰り返しをHDFS /ディスクに移動するため)。

使用すると、1つは、MapReduceのを使用してPageRankのようなものを実装する方法を見てに興味がある場合は、ここを見て、と言った:

スタートでrun()メソッドからPageRank.java

あなたが興味を持っている場合は、古い(すなわち2009)の束を見てすることができますが、ここでスライド:

さて、あなたはPraveenさんは、すでにあなたに提案したようなApache GiraphなどプレゲルクローンでのPageRankを実行している/実装ではるかに楽しいを持つことができます。

+0

+1。 – Yang

関連する問題