我有一个非常简单的上传方法,可以将文件上传到单节点hdp2.5集群:
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI("webhdfs://hdsfhost:50070", conf);
fs.copyFromLocalFile(false, true, new Path(localFilePath), new Path(hdfsPath));
跟踪流程正确启动的内容:
这就是失败的地方:发现datanode是localhost:50075而不是hdfshost:50075,导致“java.net.ConnectException:Connection refused”。
我在hdp上有以下相关设置:
我找不到使用localhost而不是hdfshost的任何原因(并且/ etc / hosts中没有覆盖,在本地计算机上也没有在群集上)。任何帮助都将非常感激。
答案 0 :(得分:1)
您需要将http地址的配置更改为本地IP地址而不是0.0.0.0。
0.0.0.0将解析为localhost,然后由dfs.client.use.datanode.hostname => true
使用,同时您的本地IP地址将解析为DNS名称,然后再由主机名使用。
由于它有效,我会将此作为答案发布,因此我不知道我的解决方案的推理是否正确。如果有人知道确切原因,请将其添加为评论或编辑我的答案。