Внутренне (т. Е. Во внутренней сети; частный IP-адрес - частный IP-адрес), я могу нормально получить доступ к своей HDFS, используя:
hdfs dfs -ls hdfs://#.#.#.#/
Однако, когда я пытаюсь сделать то же самое с компьютера за пределами В сети, в которой находится namenode HDFS (очевидно, используя WAN IP-адрес компьютера namenode вместо IP-адреса локальной сети), я получаю:
ls: DestHost:destPort ec2-▒-▒-▒-▒.compute-1.amazonaws.com:8020 , LocalHost:localPort mymachine/127.0.0.1:0. Failed on local exception: java.io.IOException: Connection reset by peer
Журнал namenode гласит:
INFO org.apache.hadoop.ipc.Server: Socket Reader #1 for port 8020: readAndProcess from client ▒.▒.▒.▒:▒ threw exception [java.io.IOException: Connection reset by peer]
java.io.IOException: Connection reset by peer
at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:197)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:377)
at org.apache.hadoop.ipc.Server.channelRead(Server.java:3486)
at org.apache.hadoop.ipc.Server.access$2600(Server.java:138)
at org.apache.hadoop.ipc.Server$Connection.readAndProcess(Server.java:2144)
at org.apache.hadoop.ipc.Server$Listener.doRead(Server.java:1389)
at org.apache.hadoop.ipc.Server$Listener$Reader.doRunLoop(Server.java:1245)
at org.apache.hadoop.ipc.Server$Listener$Reader.run(Server.java:1216)
My core-site.xml
читает:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://0.0.0.0:8020</value>
</property>
</configuration>
Обратите внимание, что я также пытался установить значение fs.defaultFS
на hdfs://#.#.#.#:8020
. Я также попытался установить его на hdfs://hadoophost:8020
и добавить #.#.#.# hadoophost
к вершине /etc/hosts
. (#.#.#.#
, очевидно, является IP-адресом локальной сети компьютера наменода в обоих случаях.) Результаты были одинаковыми.
My hdfs-site.xml
читает:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>
Обратите внимание, что я в состоянии telnet
внешне к машине наменода через порт 8020
просто отлично.
Какие настройки мне не хватает, чтобы разрешить внешний доступ к моей файловой системе Had oop?