Я установил распределенную среду 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-адресами, но я действительно не уверен, что это такое. Мысли?
Это решение сработало для меня. Т.е. убедитесь, что имя, которое вы использовали в свойстве в 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