2017-01-04 1 views
1

Windows 10 시스템에서 Hadoop Docker 컨테이너를 실행하고 있습니다. 내 HDFS에 액세스하기 위해 this 라이브러리를 사용하는 Python 프로그램을 작성하려고합니다. "http://localhost:50070"(50070은 webHDFS 포트)으로 구성된 클라이언트로 폴더 내용을 나열 할 수 있습니다. 그러나 파일의 내용을 읽으려고 할 때 주소를 확인할 수 없다는 오류가 나타납니다. 반환 된 오류에서 호스트는 "localhost"또는 "127.0.0.1"대신 "Docker container"의 ID "453af3bd9164"입니다.Docker 컨테이너에 대한 HTTP 호출은 IP를 Docker ID로 리디렉션합니다.

다른 Docker 컨테이너와 다른 Python 라이브러리를 사용해 보았지만 유사한 오류가 발생했습니다. 따라서 내 Docker 또는 Hadoop 환경을 올바르게 구성하지 않는다고 생각합니다. Docker 호스트 컴퓨터에서 NameNode WebUI에 액세스 할 수 있고 목록 폴더 내용이 제대로 작동하므로 내 데이터 노드 구성이 문제가 될 수 있다고 생각합니다. WebUI를 통해 확인할 때 내 데이터 노드는 "In Service"로 표시되므로 적어도 실행 중입니다.

내 HDFS 데이터 노드에 대한 HTTP 호출이 제대로 작동하도록 내 환경을 올바르게 구성하려면 어떻게해야합니까?

코어를 site.xml :

<configuration> 
    <property> 
    <name>fs.defaultFS</name> 
    <value>hdfs://localhost:9000</value> 
    </property> 
</configuration> 

HDFS-site.xml 파일 :

<configuration> 
    <property> 
    <name>dfs.replication</name> 
    <value>1</value> 
    </property> 
    <property> 
    <name>dfs.datanode.http.address</name> 
    <value>0.0.0.0:50075</value> 
    </property> 
</configuration> 

etc/hosts 파일 : 시간 후

127.0.0.1  localhost 
::1  localhost ip6-localhost ip6-loopback 
fe00::0 ip6-localnet 
ff00::0 ip6-mcastprefix 
ff02::1 ip6-allnodes 
ff02::2 ip6-allrouters 
172.17.0.2 453af3bd9164 
192.168.56.1 192.168.56.1 
+1

hadoop에 대해서는 0이 아니지만 ... 나는 구성에서 localhost를 사용하고 싶지 않을 것이라고 확신합니다. 실제 호스트 이름을 사용하십시오. – user2105103

답변

0

주위 파고의 시간, I 마침내 문제가 해결되었습니다. 어쩌면 이것은 어떤 사람들에게는 명백 할 수 있겠지만, 내 솔루션을 게시함으로써 나를 좋아하는 놈들을 도울 수 있기를 바랍니다.

처음으로 도커를 실행했을 때 컨테이너에 사용할 호스트 이름을 지정하지 않았으므로 임의의 기본값 (이 경우 453af3bd9164)이 할당되었습니다. 그러나 이로 인해 DNS 조회 문제가 발생하며 Docker 컨테이너의 호스트 컴퓨터 이름과 도커 컨테이너 이름이 같은지 확인해야합니다. 이 두 가지가 내 데이타 노드에 읽기/쓰기 할 수 수행

<property> 
    <name>dfs.namenode.datanode.registration.ip-hostname-check</name> 
    <value>false</false> 
</property> 

:

docker run -h "[email protected]" 

가 나는 또한 내 HDFS-site.xml에이 속성을 추가 : 그래서이 플래그를 추가했다.

관련 문제