1、搭建的hadoop环境,datanode使用的都是内网ip(172.16.1.142,172.16.1.148),只有142节点开通了外网ip
2、通过Java远程获取HDFS上的数据,返回给Java程序的datanode地址都是内网ip,Java连接不上,请问怎么办?
3、设置了参数configuration.set("dfs.client.use.datanode.hostname", "true"); 报错信息如下:
2018-08-17 14:22:38,670 INFO [org.apache.hadoop.hdfs.DFSClient] - Exception in createBlockOutputStream
java.io.IOException: Got error, status message , ack with firstBadLink as 172.16.1.148:50010
at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:140)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.createBlockOutputStream(DFSOutputStream.java:1363)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1266)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:449)
2018-08-17 14:22:38,673 INFO [org.apache.hadoop.hdfs.DFSClient] - Abandoning BP-1760557445-172.16.1.142-1534486349045:blk_1073741829_1005
2018-08-17 14:22:38,701 INFO [org.apache.hadoop.hdfs.DFSClient] - Excluding datanode DatanodeInfoWithStorage[172.16.1.148:50010,DS-dd301dfb-ae4e-4adc-8152-e11bbf0880e0,DISK]### 问题
hadoop连接很特殊,根据主机名连接,而且要求每个节点必须都能访问到,因此你用普通的端口映射的方案是无法解决的。
你必须使用VPN的方案连接,如果觉得VPN太重,只是临时连接测试一下的话,也可以考虑sshuttle方案。具体看我的blog: https://www.jianshu.com/p/edc...