Итеративная карта сокращает количество рабочих мест.Как взять выход редуктора и подать его на следующую ступень? - PullRequest
3 голосов
/ 27 ноября 2011

В частности, я пытаюсь найти способ вычислить кратчайший путь в графе, используя карту Reduce.Тот, который я придумал, требует уменьшения количества раундов карты.Тем не менее, вся документация, которую я до сих пор читал на Hadoop, не дает четкого описания выполнения работ по сокращению карты, которые имеют несколько этапов.,Я надеюсь, что что-то вроде его пустоты будет разрешено в Hadoop.

Ответы [ 3 ]

2 голосов
/ 27 ноября 2011

Я написал об этом здесь:

http://codingwiththomas.blogspot.com/2011/04/controlling-hadoop-job-recursion.html

Это даже связано с алгоритмом графа, в итоге вы получите тот же код.

Основная идея заключается в том, что у вас есть счетчик, который будет показателем того, сколько вершин было обновлено за один шаг восстановления карты. Затем вы будете планировать задания снова и снова, пока у вас не будет обновленных вершин.

А если серьезно, MapReduce отстой для графовых алгоритмов, используйте для этого лучший фреймворк, такой как Apache Hama .

Apache Giraph может быть полезным и для вас.

0 голосов
/ 18 ноября 2012

Я думаю, вы можете сослаться на этот пример: http://famousphil.com/blog/2011/06/a-hadoop-mapreduce-solution-to-dijkstra%E2%80%99s-algorithm/

0 голосов
/ 28 ноября 2011

Ответ Стива по сути правильный.Для каждого шага вы будете устанавливать входной каталог inputformat равным выходному каталогу предыдущего шага.Повторите это столько раз, сколько вам нужно.Однако Map-Reduce - плохая абстракция для задач с итеративным графом.Взгляните на Apache Giraph , который разработан специально для подобных ситуаций.Вы поймете, что вашу проблему легче выразить, и итеративный характер проблемы позаботится о вас.

...