内网搭建的hadoop分布式环境,如何通过外网访问

新手上路,请多包涵

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]### 问题
阅读 5.2k
1 个回答

hadoop连接很特殊,根据主机名连接,而且要求每个节点必须都能访问到,因此你用普通的端口映射的方案是无法解决的。

你必须使用VPN的方案连接,如果觉得VPN太重,只是临时连接测试一下的话,也可以考虑sshuttle方案。具体看我的blog: https://www.jianshu.com/p/edc...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题