2017-09-28 5 views
0

J'ai commencé les conteneurs docker suivantsHadoop de la -Mettre a DataStreamer Exception java.nio.channels.UnresolvedAddressException

namenode 
datanode1 
datanode2 
datanode3 

Lorsque je tente de mettre un fichier dans HDFS comme suit, je reçois cette erreur

hdfs dfs -put /tmp/airline-2008.csv.bz2 hdfs://namenode.bigdatacluster.com:8020/data/ 

17/09/28 22:49:01 WARN hdfs.DataStreamer: DataStreamer Exception java.nio.channels.UnresolvedAddressException à 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. connecter (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) mis: java.nio.channels.UnresolvedAddressException

Répondre

1

De doc Oracle Java,

Unchecked exception thrown when an attempt is made to invoke a network operation upon an unresolved socket address 

Cela signifie que le nom d'hôte namenode.bigdatacluster.com utilisé dans l'URL de HDFS ne reçoit pas résolu à l'adresse IP. Vous pouvez résoudre ce problème en ajoutant l'hôte au mappage IP au fichier /etc/hosts.

+0

Vous aviez raison. J'ai compris cela aussi. Le DNS incorporé dans le service de découverte de docker peut résoudre ces entrées DNS, mais les appels d'API HDFS n'atteignent jamais ce point de service de découverte et échouent simplement. Au lieu d'ajouter des entrées dans {/ etc/hosts} (puisque les IP changeront à chaque redémarrage), j'ai configuré un réseau virtuel pour que toutes les machines communiquent entre elles et modifient le fichier core-site.conf pour utiliser l'adresse machine sur ce réseau. –