2016-12-21 5 views
2

Я запускаю несколько Map-Reduce-Jobs на кластере aws emr с ~ 10 узлами. (emr 4.7.11, m3.xlarge)AWS EMR Cluster терпит неудачу, потому что диск заполнен

Пока работа выполняется, рабочие узлы начинают умирать один за другим через ~ 4 часа. В журналах я нашел следующее сообщение об ошибке:

"1/3 local-dirs are bad: /mnt/yarn; 1/1 log-dirs are bad: /var/log/hadoop-yarn/containers"

Дисков на рабочих узлах были на 96%, используемых, когда узлы не удались. Итак, я предполагаю, что диски на узлах получили 100%, и никакие файлы не могут быть записаны на диск.

Итак, я попытался подключить 500 ГБ EBS к каждому экземпляру. Но Hadoop использует только /mnt и не использует дополнительный том (/mnt2).

Как настроить кластер AWS EMR для использования /mnt2? Я попытался использовать файл конфигурации, но теперь кластер не работает с ошибкой On the master instance (i-id), bootstrap action 6 returned a non-zero на начальной загрузке. , к сожалению, есть самозагрузки действие 6 журнала в s3 ведро

Конфигурационный файл:

[ 
    { 
    "Classification": "core-site", 
    "Properties": { 
     "hadoop.tmp.dir": "/mnt2/var/lib/hadoop/tmp" 
    } 
    }, 
    { 
    "Classification": "mapred-site", 
    "Properties": { 
     "mapred.local.dir": "/mnt2/var/lib/hadoop/mapred" 
    } 
    } 
] 

Каждый имеет намек, почему кластер терпит неудачу на старте? Или есть другой способ увеличить начальный объем EBS экземпляров m3.xlarge?

https://forums.aws.amazon.com/thread.jspa?threadID=225588 Похоже, тот же вопрос, но нет никакого решения

ответ

0

если диск (например,/мнт /) выходит за пределы 90%, то основной узел/задача будет помечена нездоровым и непригодным для использования по ПРЯЖИ. См yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage в http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

Теперь, если вы приложите тома EBS с ЭМ API (при которых вы готовите свой кластер), то EMR действительно использует эти объемы для определенных свойств автоматически. Например: mapred.local.dir будет использовать все монтировки. Однако некоторые свойства, такие как (hasoop.tmp.dir, yarn.nodemanager.log-dirs), могут не использовать все монтировки. Для таких свойств вам нужно будет добавить пути к каталогам в качестве значений и установить их с помощью API конфигурации или вручную отредактировать необходимые файлы.

<property> 
    <name>mapred.local.dir</name> 
    <value>/mnt/mapred,/mnt1/mapred</value> 
    </property> 

    <property> 
    <name>hadoop.tmp.dir</name> 
    <value>/mnt/var/lib/hadoop/tmp</value> 
    </property>