Я успешно установил и запустил Hadoop на одной машине с IP-адресом 192.168.1.109 (на самом деле это фактически экземпляр Ubuntu, работающий в виртуальной коробке).
При наборе jps отображается
2473 DataNode
2765 TaskTracker
3373 Jps
2361 NameNode
2588 SecondaryNameNode
2655 JobTracker
Это должно означать, что hadoop запущен и работает.
Выполнение таких команд, как ./hadoop fs -ls, в порядке и дает ожидаемый результат.
Но если я попытаюсь подключить его из окна Windows с IP-адресом 192.168.1.80, написав
API-интерфейс HDFS Java-кода для его подключения следующим образом:
Конфигурация conf = новая конфигурация ();
FileSystem hdfs = null;
Путь filenamePath = новый путь (FILE_NAME);
hdfs = FileSystem.get (conf); <- проблема возникла в этой строке </p>
когда я запускаю код, ошибка отображается следующим образом:
11/12/07 20:37:24 INFO ipc.Client: Повторная попытка подключения к серверу: /192.168.1.109:9000. Уже пробовали 0 раз (а).
11/12/07 20:37:26 INFO ipc.Client: Повторная попытка подключения к серверу: /192.168.1.109:9000. Уже пробовал 1 раз.
11/12/07 20:37:28 INFO ipc.Client: Повторная попытка подключения к серверу: /192.168.1.109:9000. Уже пробовал 2 раз.
11/12/07 20:37:30 INFO ipc.Client: Повторное подключение к серверу: /192.168.1.109:9000. Уже пробовал 3 раз.
11/12/07 20:37:32 INFO ipc.Client: Повторная попытка подключения к серверу: /192.168.1.109:9000. Уже пробовал 4 раз.
11/12/07 20:37:33 INFO ipc.Client: Повторное подключение к серверу: /192.168.1.109:9000. Уже пробовал 5 раз.
11/12/07 20:37:35 INFO ipc.Client: Повторная попытка подключения к серверу: /192.168.1.109:9000. Уже пробовали 6 раз.
11/12/07 20:37:37 INFO ipc.Client: Повторная попытка подключения к серверу: /192.168.1.109:9000. Уже пробовали 7 раз.
11/12/07 20:37:39 INFO ipc.Client: Повторная попытка подключения к серверу: /192.168.1.109:9000. Уже пробовали 8 раз.
11/12/07 20:37:41 INFO ipc.Client: Повторная попытка подключения к серверу: /192.168.1.109:9000. Уже пробовали 9 раз.
java.net.ConnectException: вызов /192.168.1.109:9000 завершился неудачно при исключении соединения: java.net.ConnectException: соединение отклонено: нет дополнительной информации
Чтобы убедиться, что сокет уже открыт и ожидает входящих подключений на сервере hadoop, я netstat на окне ubuntu
Результат показывает следующее:
tcp 0 0 localhost: 51201 : LISTEN 2765 / java
tcp 0 0 *: 50020 : СЛУШАТЬ 2473 / Java
tcp 0 0 localhost: 9000 : LISTEN 2361 / java
tcp 0 0 localhost: 9001 : LISTEN 2655 / java
tcp 0 0 *: mysql : LISTEN -
tcp 0 0 *: 50090 : LISTEN 2588 / java
tcp 0 0 *: 11211 : СЛУШАТЬ -
tcp 0 0 *: 40843 : СЛУШАТЬ 2473 / Java
tcp 0 0 *: 58699 : СЛУШАТЬ -
tcp 0 0 *: 50060 : LISTEN 2765 / java
tcp 0 0 *: 50030 : LISTEN 2655 / java
tcp 0 0 *: 53966 : LISTEN 2655 / java
tcp 0 0 *: www : LISTEN -
tcp 0 0 *: epmd : LISTEN -
tcp 0 0 *: 55826 : LISTEN 2588 / java
tcp 0 0 *: ftp : LISTEN -
tcp 0 0 *: 50070 : LISTEN 2361 / java
tcp 0 0 *: 52822 : LISTEN 2361 / java
tcp 0 0 *: ssh : LISTEN -
tcp 0 0 *: 55672 : LISTEN -
tcp 0 0 *: 50010 : LISTEN 2473 / java
tcp 0 0 *: 50075 : LISTEN 2473 / java
Я заметил, что если столбец локального адреса похож на localhost: 9000 (начинается с localhost: not * :) Он не сможет быть подключен с удаленного хоста или даже в своем собственном окне в некоторых случаях.Я попытался telnet localhost 9000, он работает, я имею в виду, что он может подключиться к порту, но если я использую telnet 192.168.1.109 9000, ошибки отображаются как
$ telnet 192.168.1.109 9000 Trying 192.168.1.109 ..telnet: невозможно подключиться к удаленному хосту: соединение отклонено
Я потратил почти неделю на выяснение проблемы, которую я действительно исчерпал, и я надеюсь, что кто-то может мне помочь.
Примечание: я не уверен, что по умолчанию наменоде отказывается от удаленного подключения.Нужно ли менять некоторые настройки, чтобы разрешить удаленные подключения?