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
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. –