Узлы данных Hadoop перестают сообщать - PullRequest
3 голосов
/ 23 января 2012

У меня кластер из 4 узлов (ведущий + 3 подчиненных), выполняющий hadoop 0.20.203.0. Каждые несколько дней датододы будут считаться мертвыми на хозяине. На ведомом устройстве все выглядит нормально, и процесс датоде все еще выполняется, в журналах нет ничего подозрительного, хотя он больше не получает никаких запросов. На ведущем устройстве журналы показывают, что сердцебиение датодеты было потеряно.

Единственное решение состоит в том, чтобы вручную остановить datanode и затем запустить его снова. Через несколько минут датодода снова становится активной.

Кто-нибудь еще испытывал это? Если да, то какова была причина и решение?

Ответы [ 3 ]

3 голосов
/ 23 января 2012

У нас была похожая проблема, для нас решением было увеличение лимита открытых файлов.

Попробуйте добавить строку типа ulimit -n 4096 в файл hadoop-env.sh

2 голосов
/ 25 января 2012

Было две проблемы.

1) Основная проблема, предложенная Томасом выше, заключалась в том, что ограничение на количество открытых файлов было установлено неправильно.

2) Вторичная проблема заключалась в обработке ошибоки отчетность.Это описано в базе данных ошибок hadoop Датодода помечена как мертвая, но процесс датодеты активен и проверяет блоки .

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

a) Больше не было попыток сердцебиения, и это не привело к остановке всей датододы.b) Он сообщил об ошибке в stderr или stdout, который обычно идет в файл .out, а не через log4j, что происходит в обычном файле .log (и я забыл, что файл .out даже существует, поэтому я не проверялесть.)

0 голосов
/ 09 января 2014

В нашем случае это произошло из-за OutOfMemoryError.Мы нашли ошибку в файле данных .out файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...