0

mapreduce で PageRank を実装しようとしているときに質問があります。ここでコードを引用したいhttps://stackoverflow.com/a/5029780/1117436問題を説明します。

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)

上記のプロセスでは、map プロシージャの入力の 2 番目のパラメーターが url の Out リンクであることは明らかですが、reduce プロシージャの出力の 2 番目のパラメーターは url の In リンクのようです。では、これらのコードはどのように繰り返し機能するのでしょうか?

では、ページランクのアルゴリズムを適切に機能させるコードの書き方を教えてください。

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

4

2 に答える 2

1

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

そうは言っても、MapReduce を使用して PageRank のようなものを実装する方法に興味がある場合は、こちらをご覧ください。

PageRank.javaの run() メソッドから開始

興味のある方は、ここで古い (つまり 2009 年) スライドをご覧ください。

これで、 Praveen が既に提案したように、 Apache Giraphなどの Pregel クローンを使用して PageRank を実装/実行することで、より多くの楽しみを持つことができます。

于 2012-05-14T09:28:17.117 に答える
0

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

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

于 2012-01-19T11:32:41.240 に答える