Hadoop Datanodes не могут найти NameNode

Я установил распределенную среду Hadoop в VirtualBox: 4 виртуальных установки Ubuntu 11.10, одна действует как главный узел, остальные три как подчиненные. Я выполнил это руководство , чтобы запустить и запустить одноузловую версию, а затем преобразовать ее в полностью распределенную версию. Он работал нормально, когда я работал 11.04; однако, когда я обновился до 11.10, он сломался. Теперь все журналы моих ведомых устройств показывают следующее сообщение об ошибке, повторяющееся до тошноты:

INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 0 time(s).
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 1 time(s).
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 2 time(s).

И так далее. Я нашел другие экземпляры этого сообщения об ошибке в Интернете (и StackOverflow ), но ни одно из решений не помогло (попытался изменить core-site.xml и mapred-site.xml должны быть IP-адресом, а не именем хоста; четырехкратная проверка / etc / hosts на всех подчиненных устройствах и главном устройстве; Мастер может использовать SSH без пароля для всех подчиненных устройств). Я даже попытался вернуть каждое ведомое устройство обратно к настройке с одним узлом, и в этом случае все они работали бы нормально (в этом случае мастер всегда отлично работает как Datanode, так и Namenode).

Единственный обнаруженный мной симптом, который может показаться подсказывающим, - это то, что когда я пытаюсь установить Telnet 192.168.1.10 54310 , я получаю Соединение отклонено от любого из ведомых устройств. ], предполагая, что существует какое-то правило, блокирующее доступ (которое должно было вступить в силу, когда я обновился до 11.10).

Однако мой /etc/hosts.allow не изменился. Пробовал правило ВСЕ: 192.168.1. , но это не повлияло на поведение.

Ах да, и netstat на главном сервере четко показывает, что TCP-порты 54310 и 54311 прослушивают.

У кого-нибудь есть предложения, как заставить подчиненные датаноды распознавать Namenode?

РЕДАКТИРОВАТЬ # 1 : Пробуя кое-что с nmap (см. Комментарии к этому сообщению), я думаю, что проблема в мои / etc / hosts файлы. Вот что указано для главной ВМ:

127.0.0.1    localhost
127.0.1.1    master
192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2
192.168.1.13 slave3

Для каждой подчиненной ВМ:

127.0.0.1    localhost
127.0.1.1    slaveX
192.168.1.10 master
192.168.1.1X slaveX

К сожалению, я не уверен, что я изменил, но NameNode теперь всегда умирает, за исключением попытки привязать порт, "который уже используется »(127.0.1.1:54310). Я явно делаю что-то не так с именами хостов и IP-адресами, но я действительно не уверен, что это такое. Мысли?

22
задан Community 23 May 2017 в 12:18
поделиться

1 ответ

Это решение сработало для меня. Т.е. убедитесь, что имя, которое вы использовали в свойстве в core-site.xml и mapred-site.xml:

<property>
   <name>fs.default.name</name>
   <value>hdfs://master:54310</value>
   <final>true</final>
 </property>

т.е. Мастер определяется в / etc / hosts как мастер xyz.xyz.xyz.xyz на обоих главных и подчиненных узлах. Затем перезапустите namenode и проверьте с помощью netstat -tuplen и убедитесь, что он привязан к «внешнему» IP-адресу

tcp        0      xyz.xyz.xyz.xyz:54310         0.0.0.0:*                   LISTEN      102        107203     - 

, а НЕ к локальному IP 192.168.x.y или 127.0.x.y

5
ответ дан 29 November 2019 в 04:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: