Hadoop:使用java API连接云服务器上的HDFS,报了异常Exception in thread "main" java.nio.channels.UnresolvedAddressException
代码:
Configuration configuration = new Configuration();
configuration.set("dfs.client.use.datanode.hostname", "true");
FileSystem fileSystem = FileSystem.get(new URI("hdfs://izm5ej961jbcj5jc0rltpxz:9000"), configuration);
FSDataInputStream open = fileSystem.open(new Path("/logs.txt"));
FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\ETL\\logs.txt"));
IOUtils.copy(open,fileOutputStream );
IOUtils.closeQuietly(open);
IOUtils.closeQuietly(fileOutputStream);
fileSystem.close();
原因:
因为云服务器有内网和外网ip,用ip连接HDFS会出错,所以我在代码里加了,“configuration.set("dfs.client.use.datanode.hostname", "true");
”
使HDFS中“namenode”和“datanode”之间,通过“ip的映射”来通信。
解决:
在hosts文件中加上映射即可