Неудачно ли работа или ваш сервер рушится? Если ваше задание терпит неудачу из-за OutOfMemmory на узлах, вы можете tweek количество максимальных карт и редукторов, а JVM выбирает для каждого так, что этого никогда не произойдет. mapred.child.java.opts (значение по умолчанию - 200Xmx) обычно должно быть увеличено на основе ваших конкретных узлов данных.
http://allthingshadoop.com/2010/04/28/map-reduce-tips-tricks-your-first-real-cluster/
Max задачи могут быть установлены на 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 ядром, тогда пришло время получить новое оборудование для вашего узла данных или установить задачи маски на 1. Если у вас 1 процессор с 4 ядрами, тогда настройка карты на 3 и сокращение до 3 будет хорошей (сохранение 1 ядро для демона).
По умолчанию используется только один редуктор, и вам необходимо настроить mapred.reduce.tasks более чем на один. Это значение должно быть где-то между 0,95 и 1,75 раза больше количества заданий на узел за раз число узлов данных. Поэтому, если у вас есть 3 узла данных, и это настройка максимальных задач из 7, тогда настройте это между 25 и 36.
Если ваш сервер рушится с проблемами OutOfMemory, тогда HADOOP_HEAPSIZE приходит только для кучи процессов (не выполнение задачи).
Наконец, если ваше задание выполняется так долго, вы можете проверить, есть ли у вас другое хорошее дополнение к конфигурации mapred.compress.map.output. Установка этого значения в значение true (баланс между временем сжатия и передачей) ускоряет копирование редукторов, особенно при работе с большими наборами данных. Часто рабочие места занимают много времени, но есть также варианты настройки, чтобы помочь ускорить работу вверх = 8 ^)
Что заставляет вас думать, что 'HADOOP_HEAPSIZE' делает * не * помогает избежать сбоя? Похоже на ваш опыт, что он делает. По причинам, которые могут быть известны только при проверке ваших данных/заданий, ваша ситуация требует размера кучи, по крайней мере, такого большого. Можете ли вы реорганизовать свою работу, чтобы она не нуждалась в такой большой куче? –
Я изменил свою работу, поэтому она не использует такую большую кучу, но и в это время я изменил «HADOOP_HEAPSIZE». И я не вижу реального исхода этого чана, я имею в виду: зачем устанавливать кучу меньше: amount_of_my_RAM/number_of_mappers_or_reducers? – wlk