나는 하나의 노드 hdp2.5 클러스터에 파일 업로드이 매우 간단한 업로드 방법이 로컬 호스트에 연결 다음을 무슨 추적자바 API 원격 HDFS에 로컬 파일을 업로드하지만
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI("webhdfs://hdsfhost:50070", conf);
fs.copyFromLocalFile(false, true, new Path(localFilePath), new Path(hdfsPath));
을 흐름은 제대로 시작 :
- 이 hdfshost에 연결 : 파일이 이미 50070,
- 체크 경우 (아니오),
- 는 데이터 노드에 연결합니다.
오류가 발생한 곳 : hdfshost : 50075 대신 datanode가 localhost : 50075로되어 "java.net.ConnectException : Connection refused"가 발생합니다.
나는 HDP에 다음과 같은 관련 설정이 있습니다
- dfs.client.use.datanode.hostname => 진정한
- dfs.datanode.http.address => 0.0.0.0:50075 을
- dfs.namenode.http 주소 => 0.0.0.0:50070
내가 localhost를 대신 hdfshost 사용됩니다 어떤 이유를 찾을 수 없습니다 (및/etc/호스트, 어느 쪽의 로컬에는 재정이 없다 클러스터에서 머신이 아님). 어떤 도움을 주시면 감사하겠습니다.
데이터 노드의 컴퓨터 이름이 localhost 줄의'/ etc/hosts' 파일에 나타 납니까? 그렇다면 실제 컴퓨터의 주소가있는 행으로 이동하십시오. – RealSkeptic
0.0.0.0에서 컴퓨터의 로컬 IP로 변경하려고 했습니까? 컴퓨터에 정기적으로 변경되지 않는 고정 IP가 있으면 문제가 해결 될 수 있습니까? – Nico
@Nico 나는 당신의 제안을 시도했지만 실제로 도움이 될 수 있다고 생각하지는 않았다. (어쨌든 왜 localhost를 돌려 줄까?) 내가 틀렸어. 네 말이 맞아. 고마워! hostname 명령이 localhost가 아니라 예상 호스트 이름을 반환 할 때 localhost가 반환되는 이유는 여전히 궁금합니다. – Guillaume