Как выполнить итерацию при расчете PageRank с помощью Mapreduce - PullRequest
0 голосов
/ 19 января 2012

У меня есть вопросы, когда я пытаюсь реализовать PageRank с помощью mapreduce. Я хочу привести здесь коды 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 являются ссылки Out в url, но вторым параметром вывода процедуры Reduction представляется ссылки In в URL. Так как эти коды могут работать итеративно?

Тогда я хочу спросить, как писать коды для правильной работы алгоритма PageRank?

ОБНОВЛЕНИЕ: я думаю, что этот ответ решает мою проблему. https://stackoverflow.com/a/13568286/1117436

Ответы [ 2 ]

1 голос
/ 14 мая 2012

Вы можете реализовать итерационные алгоритмы, используя MapReduce, но это может быть не лучшим и более эффективным способом (потому что вы перемещаете вещи на HDFS / диск каждую итерацию).

Сказав это, если вам интересно посмотреть, как можно реализовать что-то вроде PageRank с помощью MapReduce, посмотрите здесь:

Запуск из метода run () в PageRank.java

Если вам интересно, вы можете взглянуть на несколько старых (т.е. 2009) слайдов здесь:

Теперь вы можете получить гораздо больше удовольствия от реализации / запуска PageRank с помощью клона Pregel, такого как Apache Giraph , как уже предлагал вам Правин.

0 голосов
/ 19 января 2012

Уже есть пара платформ обработки графиков.

Посмотрите на Apache Giraph , который можно использовать для обработки графиков.Giraph основан на MR. GoldenOrb находится на очень ранней стадии.Кроме того, взгляните на Apache Hama , который является реализацией BSP , имеет собственный механизм вычислений и не основан на MR, но использует HDFS для хранения.Хама также может быть использована для обработки графа.

...