Хорошо ли подходит MapReduce для решения проблем в одноядерной многоядерной среде в памяти? - PullRequest
6 голосов
/ 25 июня 2011

Подходит ли абстракция MapReduce для решения проблем даже на одной машине? Например, у меня 12-ядерный компьютер, и я должен считать слова в тысячах файлов (классический пример MapReduce).

Использование реализации MapReduce с Mappers и Reducers в нескольких потоках является хорошим способом решения этой проблемы, учитывая, что мы работаем на одной машине с одним жестким диском?

Полагаю, мой вопрос сводится к следующему: парадигма MapReduce хороша только для работы в кластере машин?

Ответы [ 2 ]

8 голосов
/ 25 июня 2011

В общем случае вы можете столкнуться с двумя ситуациями:

  1. Ваша проблема достаточно мала, чтобы поместиться в память вашей единой системы, и у вашей единой системы достаточно ресурсов процессора, чтобы решить проблему в течение требуемого времени.
  2. Ваша проблема слишком велика.2.1 Время работы слишком велико (дисковый ввод-вывод и / или время процессора) 2.2 Слишком велико, чтобы поместиться в память (ОЗУ).

Для 2.1 и 2.2 парадигма MapReduce очень помогает разделить работу намного маленьких кусков.Если вам нужно больше процессоров, вы просто добавляете процессоры.

Таким образом, если у вас есть одна система, и оказывается, что ваша проблема слишком велика, чтобы уместиться в память (пункт 2.2), вы все равно можете извлечь выгоду из того факта, что MapReduce может легко поместить часть проблемы на диск доэта часть должна быть обработана.

Важным фактом является то, что если у вас есть проблема, которая достаточно мала, чтобы поместиться в память, и достаточно мала, чтобы обрабатываться в одной системе, тогда выделенное (не MapReduce) решениеможет быть намного быстрее.

1 голос
/ 25 июня 2011

Полагаю, мой вопрос сводится к следующему: парадигма MapReduce хороша только для работы в кластере машин?

В общем, да: MapReduce, вероятно, будет менее эффективен водин компьютер.Я не могу думать о многих (если таковые имеются) ситуациях, когда MapReduce будет иметь преимущество перед более оптимизированными по ресурсам подходами при использовании в нераспределенной среде (например, один ПК, один жесткий диск).Другими словами, если вы пытаетесь выжать каждую частичку производительности вашего единственного компьютера, вы, скорее всего, сможете добиться этого с помощью специального решения вместо MapReduce.

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

...