Карта / Уменьшить на одном сервере - PullRequest
3 голосов
/ 08 ноября 2011

Имеет ли смысл сделать карту / уменьшить на неосколенной архитектуре?

Или, другими словами, эффективно ли это делать на одном сервере.

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

В целом я не согласен с Правином.

Да, я согласен, что при работе в одной системе вы теряете отказоустойчивые свойства платформы. Однако во многих ситуациях платформа имеет полезные свойства для определенных целей.

Есть много ситуаций, когда использование инструментария Hadoop имеет преимущества по сравнению с использованием Hadoop.

  1. Вам не нужно беспокоиться о размере входного файла. Если ваши входные данные много ГиБ, вы все равно можете запустить их в системе, где доступно только 512 МБ системной памяти.
  2. С помощью платформы вы можете заставить ваше приложение для обработки данных работать в многопоточном режиме без необходимости погружаться в создание потоков. Вы просто развертываете свое приложение на другом экземпляре платформы.
  3. Вы держите дверь открытой для масштабирования по нескольким системам. Когда ваше приложение достигает этого уровня, шаг к реальной горизонтальной масштабируемости становится очень простым.

Когда вы написали свое приложение обработки с использованием Hadoop, у вас есть несколько вариантов его запуска:

  1. Однопоточность на одном блоке с использованием локальной файловой системы. Таким образом, это просто Java-приложение командной строки, которое преобразует ввод в вывод.
  2. Только с настройкой Jobtracker / Tasktracker на одном компьютере с использованием локальной файловой системы. Для получения дополнительной информации см. Этот вопрос:
  3. Полное распространение в одной системе (режим псевдораспределения ).
  4. Полноценная мультисистемная настройка.
2 голосов
/ 09 ноября 2011

С MapReduce, я думаю, вы имеете в виду Hadoop. Существуют и другие языки и платформы, которые поддерживают парадигму MapReduce. Вот мое мнение о Hadoop.

Hadoop на одном сервере подходит для тестирования ( автономные и псевдораспределенные режимы ).

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

При использовании одного сервера лучше не использовать Hadoop (который предназначен для распределенных вычислений).

...