Ответ 1
Является ли сбой задания или сбой вашего сервера? Если ваше задание терпит неудачу из-за OutOfMemmory на узлах, вы можете tweek количество максимальных карт и редукторов, а JVM выбирает для каждого так, что этого никогда не произойдет. mapred.child.java.opts(значение по умолчанию - 200Xmx) обычно должно быть увеличено на основе ваших конкретных узлов данных.
http://allthingshadoop.com/2010/04/28/map-reduce-tips-tricks-your-first-real-cluster/
Максимальные задачи могут быть настроены на Namenode или переопределены (и установлены окончательные) на узлах данных, которые могут иметь разные конфигурации оборудования. Максимальные задачи настраиваются как для карт, так и для редукторов. Чтобы вычислить это, он основан на ЦП (ядрах) и объеме ОЗУ, а также максимальную настройку JVM в mapred.child.java.opts(по умолчанию - 200). Каждый Datanode и Tasktracker имеют значение 1GB, поэтому для машины с 8 Гбайтами mapred.tasktracker.map.tasks.maximum может быть установлен в 7, а mapred.tasktracker.reduce.tasks.maximum - 7 с mapred.child.java.opts установлен на -400Xmx (предполагается 8 ядер). Обратите внимание, что эти максимальные значения заданий выполняются вашим процессором, если у вас только 1 процессор с 1 ядром, тогда пришло время получить новое оборудование для ваших данных node или установить задачи маски на 1. Если у вас 1 процессор с 4 ядра, то установка карты на 3 и сокращение до 3 будет хорошей (сохранение 1 ядро для демона).
По умолчанию используется только один редуктор, и вам нужно настроить mapred.reduce.tasks как несколько. Это значение должно находиться где-то между 0,95 и 1,75 раза больше максимальных задач на node раз больше количества узлов данных. Поэтому, если у вас есть 3 узла данных, и он устанавливает максимальные задачи из 7, тогда настройте это между 25 и 36.
Если ваш сервер терпит крах с проблемами OutOfMemory, тогда HADOOP_HEAPSIZE приходит только для кучи процессов (а не для выполнения задачи).
Наконец, если ваше задание длится так долго, вы можете проверить, есть ли у вас другое хорошее дополнение к конфигурации mapred.compress.map.output. Установка этого значения в значение true (баланс между временем сжатия и передачей) ускоряет копирование редукторов, особенно при работе с большими наборами данных. Часто для выполнения заданий требуется время, но есть также варианты настройки, чтобы ускорить работу вверх = 8 ^)