2013-06-26 1 views
2

CCDH 인증을 받기 위해 온라인에서 몇 가지 샘플 질문을 찾았지만 솔직히 말해서 정확하지는 않습니다. 따라서 여기에서 확인하고 싶습니다.NameNode 읽기 작업시 DataNode 통신

다음 중 HDFS의 읽기 작업을 가장 잘 설명하는 것은 어느 것입니까?

A. 클라이언트는 NameNode에 블록 위치를 쿼리합니다. NameNode는 블록 위치를 클라이언트에 반환합니다. 클라이언트는 DataNode에서 데이터 디렉토리를 읽습니다.

B. 클라이언트는 모든 DataNode를 병렬로 쿼리합니다. 요청 된 데이터를 포함하는 DataNode는 클라이언트에 직접 응답합니다. 클라이언트는 DataNode에서 직접 데이터를 읽습니다.

C. 클라이언트가 블록 위치의 NameNode에 접속합니다. NameNode 다음으로 은 DataNode에 블록 위치를 쿼리합니다. DataNodes는 NameNode에 으로 응답하고 NameNode는 클라이언트를 요청 된 데이터를 보유하는 DataNode로 리디렉션합니다. 블록. 그런 다음 클라이언트는 DataNode에서 직접 데이터를 읽습니다.

D. 클라이언트가 블록 위치의 NameNode에 접속합니다. NameNode는 요청 된 데이터 블록을 보유하는 DataNode 인 에 접속합니다. 데이터는 DataNode 에서 NameNode로 전송 된 다음 NameNode에서 클라이언트로 전송됩니다.

필자는 B와 D를 잘 알고 있습니다.이 문서에 따르면 정답은 C입니다.하지만 NameNode는 RAM에 블록 위치가 이미 있고 데이터 노드를 쿼리 할 필요가 없다고 항상 생각했습니다. 그래서 나는 정답이 A.이 될 것이라고 기대할 것입니다. 잘못 되었습니까? 아니면 잘못 되었습니까?

답변

3

NameNode는 블록 위치를 가져 오기 위해 DataNodes를 쿼리하지 않습니다. 대신 DN에서 보낸 block reports의 도움으로 동적으로 구성됩니다. DN은 하트 비트와 함께 NN에 몇 초마다 블록 보고서를 보냅니다.

그래서 정답은 옵션 A.해야

0

드물게 데이타 노드와 통신하지 주요 작품은 클라이언트/쓰기 요청을 읽고 데이타 노드에서 메타 데이터를 업데이트 제공하는 것을 왜 네임 노드 이유, 따라서 데이터 노드에서 데이터를 가져 오는 데 리소스와 시간을 낭비하지 않습니다. 대신 데이터 노드는 하트 비트를 제공하고 보고서를 차단하기 위해 간단한 소켓 기반 통신 인 namenode와 통신합니다. http://hashprompt.blogspot.com/2014/05/multi-node-hadoop-cluster-on-oracle.html을 참조하십시오.

0

정답은 옵션 A.

NN-> 클라이언트해야한다 - NN 저장 모든 파일 이름, 메모리 블록 위치 및 필요한 정보와 클라이언트에 응답합니다.

NN-> DN - Hadoop (저가형 하드웨어)에서는 클러스터에서 DN을 사용할 수 없으므로 (네트워크 또는 하드웨어 문제로 인해) NN이 metdata에 DD를 사용해서는 안되기 때문에이 방법은 유효하지 않은 것처럼 보입니다.

희망이 도움이됩니다.