Подтвердить что ты не робот

Разница между вилкой/соединением и картой/уменьшением

В чем ключевое различие между Fork/Join и Map/Reduce?

Различаются ли они в разложении и распределении (данные против вычисления)?

4b9b3361

Ответ 1

Одно из ключевых отличий заключается в том, что FJ, похоже, предназначен для работы на одной виртуальной машине Java, а MR явно предназначен для работы на большом кластере машин. Это очень разные сценарии.

F-J предлагает средства для разбивки задачи на несколько подзадач в рекурсивном режиме; больше уровней, возможность "межфокусного общения" на этом этапе, гораздо более традиционное программирование. Не распространяется (по крайней мере, на бумаге) за пределы одной машины. Отлично подходит для использования вашего восьмиядерного процессора.

M-R делает только один большой раскол, при этом отображаемые расщепления не разговаривают между собой вообще, а затем сводят все вместе. Единый уровень, без межсетевого обмена до уменьшения и масштабируемость. Отлично подходит для использования вашей доли облака.

Ответ 2

Существует целая научная статья по этой теме, Сравнение Fork/Join и MapReduce.

В документе сравниваются производительность, масштабируемость и программируемость трех параллельных парадигм: fork/join, MapReduce и гибридный подход.

Что они находят, в основном, что Java вилки/нарисуй имеет низкую задержку запуска и хорошо масштабируется для маленьких входов (< 5МБЫ), но он не может обрабатывать большие входы из-за ограничения размера разделяемой-память, одиночная архитектура node. С другой стороны, MapReduce имеет значительную задержку запуска (десятки секунд), но хорошо масштабируется для гораздо больших входов ( > 100 Мбайт) в вычислительном кластере.

Но есть еще многое, что можно прочитать там, если вы готовы к этому.