2017-04-10 1 views
2

다음의 AWS EC2에 hadoop 및 spark를 성공적으로 설치했습니다. AWS의 스파크에서 HDFS에 액세스 할 수 있습니다. 내가로컬 시스템에서 AWS의 HDFS 파일에 액세스하려고 할 때 오류가 발생합니다.

val lines = sc.textFile("hdfs://namenode_public_DNS:9000/datasets/wikipedia/wikipedia.dat") 
lines.first() 

을 통해 내 로컬 컴퓨터에서 HDFS 파일에 액세스하려고 할 때

그러나, 나는이 문제를 해결할 수있는 방법

17/04/10 16:35:41 WARN BlockReaderFactory: I/O error constructing remote block reader. 
org.apache.hadoop.net.ConnectTimeoutException: 60000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=/datanode_ip:50010] 

를 얻을?

미리 감사드립니다.


  1. 모든 AWS 인스턴스는 모든 트래픽을 허용하도록 설정되어 있습니다.
  2. 나는 외부에서 액세스 할 수 있어야 만 1 네임 노드 1 개 데이터 노드
+0

네임 노드가 클라이언트에 반환 한 datanode의 IP는 로컬 시스템에서 액세스 할 수없는 개인 IP입니다. – franklinsijo

답변

0

는 HDFS에 사용되는 포트가 있습니다. 로컬 시스템에서이 명령을 실행하십시오.

$telnet namenode_public_DNS 9000 

그리고 날씨를 확인하여 hdfs 포트에 액세스 할 수 있습니다.

+0

출력이'namenode_public_DNS'에 연결되었습니다. '이스케이프 문자가'^] '입니다.'하지만 여전히 데이터 세트에 연결할 수 없습니다. – fois

+0

또한 모든 datanode의 50010 포트에 대해 방화벽을 활성화합니다. – Kaushal

0

EC2 인스턴스에 맞게 Security Groups을 올바르게 구성했는지 확인하십시오. 기본적으로 EC2 인스턴스의 보안 그룹 구성에서는 인바운드 트래픽을 허용하지 않습니다. http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule에 제공된 절차를 적용하고 포트 9000에 대한 인바운드 트래픽을 추가하여 보안 그룹에 새 규칙을 추가 할 수 있습니다 (보안 그룹은 상태 정보이므로 아웃 바운드에는 아무 것도 할 필요가 없습니다).

+0

모든 인스턴스가 모든 트래픽을 허용하도록 설정되어 있는지 확인했습니다. – fois

+0

테스트 목적으로'hadoop fs -ls hdfs : // namenode_public_DNS : 9000/datasets/wikipedia/wikipedia.dat'를 시도 할 수 있도록 Hadoop을 로컬에 설치할 수 있습니까? 적어도 파일을 나열 할 수 있는지 확인하려면? –

관련 문제