oop: Как получить доступ к HDFS с внешнего IP? - PullRequest
0 голосов
/ 15 апреля 2020

Внутренне (т. Е. Во внутренней сети; частный 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?

...