Hadoop fs-put有DataStreamer异常java.nio.channels.UnsolvedAddressException
我已经启动了以下docker容器Hadoop fs-put有DataStreamer异常java.nio.channels.UnsolvedAddressException,hadoop,docker-compose,Hadoop,Docker Compose,我已经启动了以下docker容器 namenode datanode1 datanode2 datanode3 当我尝试按如下方式将文件放入HDFS时,会出现此错误 hdfs dfs -put /tmp/airline-2008.csv.bz2 hdfs://namenode.bigdatacluster.com:8020/data/ 17/09/28 22:49:01警告hdfs.DataStreamer:DataStreamer异常 java.nio.channels.uns
namenode
datanode1
datanode2
datanode3
当我尝试按如下方式将文件放入HDFS时,会出现此错误
hdfs dfs -put /tmp/airline-2008.csv.bz2 hdfs://namenode.bigdatacluster.com:8020/data/
17/09/28 22:49:01警告hdfs.DataStreamer:DataStreamer异常
java.nio.channels.unsolvedAddressException
位于sun.nio.ch.Net.checkAddress(Net.java:101)
位于sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:622)
位于org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:192)
位于org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531)
位于org.apache.hadoop.hdfs.DataStreamer.createSocketForPipeline(DataStreamer.java:226)
位于org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStream(DataStreamer.java:1591)
位于org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1547)
在org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:658)上,输入:
java.nio.channels.unsolvedAddressException
从Oracle java文档
Unchecked exception thrown when an attempt is made to invoke a network operation upon an unresolved socket address
这意味着hdfs URL中使用的主机名namenode.bigdatacluster.com未解析为IP地址。您可以通过将主机到IP映射添加到/etc/hosts
文件来解决此问题。来自Oracle java文档
Unchecked exception thrown when an attempt is made to invoke a network operation upon an unresolved socket address
这意味着hdfs URL中使用的主机名namenode.bigdatacluster.com未解析为IP地址。您可以通过将主机到IP映射添加到
/etc/hosts
文件来解决此问题。您是对的。我也解决了这个问题。docker discovery服务中的嵌入式DNS可以解析这些DNS条目,但HDFS API调用在discovery service point上从未到达该点,因此会失败。我没有在{/etc/hosts}中添加条目(因为IP在每次重新启动时都会改变),而是为所有机器配置了一个虚拟网络,让它们相互通信,并修改了core-site.conf文件以使用该网络上的机器地址。你是对的。我也发现了这一点。docker discovery服务中的嵌入式DNS可以解析这些DNS条目,但HDFS API调用在discovery service point上从未到达该点,因此会失败。我没有在{/etc/hosts}中添加条目(因为IP在每次重新启动时都会发生变化),而是为所有机器配置了一个虚拟网络,使其能够相互通信,并修改了core-site.conf文件以使用该网络上的机器地址。