解决方案:外域HDFS客户端访问内网HDFS datanode
外域HDFS客戶端訪問內網HDFS datanode
客戶端機器報錯
外域機器通信需要用外網ip,未配置hostname訪問會訪問異常,namenode return hosts to hadoop client,the hosts is inner ip,outter client can not request by inner ip. so need config **dfs.client.use.datanode.hostname** in otter client.
解決方案
參考https://stackoverflow.com/questions/14288453/writing-to-hdfs-from-java-getting-could-only-be-replicated-to-0-nodes-instead?tdsourcetag=s_pcqq_aiomsg
云主機hosts文件配內網ip,本地windows電腦配置主機名對應公網ip。
配置hdfs-site.xml
配置客戶端用hostname方式訪問集群,將配置好的文件hdfs-site.xml拷貝到本地代碼的resource目錄下
<configuration> <property><name>dfs.client.use.datanode.hostname</name><value>true</value> </property> <property><name>dfs.datanode.use.datanode.hostname</name><value>true</value> </property> </configuration>java_api客戶端
Configuration conf=new Configuration(); conf.set("dfs.client.use.datanode.hostname", "true");參考鏈接:
https://blog.csdn.net/weixin_41350766/article/details/81111309
https://blog.csdn.net/whiteblacksheep/article/details/100114211
總結
以上是生活随笔為你收集整理的解决方案:外域HDFS客户端访问内网HDFS datanode的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDFS报错解决:Operation c
- 下一篇: 【收藏】Kubernetes学习之路(二