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.이 될 것이라고 기대할 것입니다. 잘못 되었습니까? 아니면 잘못 되었습니까?