Hadoop 시리즈 -HDFS 관련 아키텍처, 인터뷰 질문, 데이터 읽기 / 데이터 쓰기 / SecondaryNameNode의 작동 메커니즘

1. HDFS 파일 블록 크기

HDFS의 파일은 물리적으로 블록 (Block)에 저장되며, 블록 크기는 매개 변수로 구성 할 수 있으며 기본값은 128M입니다.
HDFS 파일 블록을 너무 작게 설정하면 주소 지정 시간이 늘어납니다. 너무 크게 설정하면 디스크가 위치 지정 블록의 시작 위치보다 훨씬 긴 시간에 데이터를 전송하게됩니다 .HDFS 블록 크기 설정은 주로 전송 속도에 따라 달라집니다. 디스크의.

둘째, HDFS 쓰기 데이터 프로세스

  1. 클라이언트 DFSNamNode요청에 파일 업로드하여 파일 NameNode있는지, 파일의 상위 디렉토리가 있는지 확인합니다.
  2. NameNode업로드하려면 Cli로 돌아갑니다.
  3. Cli첫 번째 데이터 블록 업로드를 요청합니다.
  4. NameNode3 개의 DataNode노드를 반환합니다 .dn1,dn2,dn3
  5. CliFSDataOutPutStream(클래스) 요청을 통해 dn1에 데이터 업로드 요청을 통해 dn1은 dn2를 호출하고 dn2는 dn3을 호출 하여 통신 채널설정합니다.
  6. dn1, dn2, dn3은 단계적으로 Cli에 응답합니다.
  7. Cli는 dn1 첫 번째 데이터 블록에 업로드를 Block시작합니다. 디스크에서 시작하여 로컬 메모리 캐시로 데이터를 읽은 다음 Package, Package회의가 dn2, dn2를 통과 한 후 수신 된 데이터 dn1 dn1 장치를 dn3, dn1로 다시 전송합니다. Package, 응답을 기다리기 위해 응답 큐에 넣습니다.
  8. 블록이 전송 된 후 Cli는 두 번째 데이터 블록을 업로드하도록 다시 NameNode에 요청합니다.
    여기에 사진 설명 삽입
    얘들 아, 인사가 많니? 아무튼 하나 가지고 있으니 먼저 적어주세요
  9. 6 단계의 단계별 응답은 무엇입니까?
    일반적으로이 응답은 파이프 라인의 마지막 데이터 노드에서 시작하여 클라이언트로 전송됩니다. 파이프 라인의 모든 노드는이 응답을 기다립니다. 응답을받은 후 데이터 수락을 시작합니다. 즉, 클라이언트는이 응답을 기다린 다음 데이터 전송을 시작합니다.
  10. 7 단계의 대기열은 무엇을해야합니까?
    DFSOutputStream동시에 또 다른 중간 대기열 ( (ack queue)확인 대기열)이 유지 됩니다. 확인 대기열의 패킷은 파이프 라인의 모든 데이터 노드가 확인 된 후에 만 ​​확인 대기열에서 제거됩니다.

세, HDFS 읽기 데이터 프로세스

  1. CliDFS를 통해 NameNode요청할 데이터 다운로드
  2. NameNode메타 데이터를 쿼리 하고 데이터가있는 노드를 반환합니다.
  3. Cli근접성 원칙에 DataNode따라 데이터 읽기 요청을 선택하십시오.
  4. DataNode에 데이터를 전송 하고 장치 CliPackage확인합니다.
  5. CliPackage수락 할 단위를 사용 하여 먼저 로컬로 캐시 한 다음 대상 파일에 기록합니다.
    여기에 사진 설명 삽입

넷째, NameNode의 작동 메커니즘과 SecondaryNameNode의 작동 메커니즘

NameNode 단계

  1. 시작하는 처음 인 경우 NameNode, 포맷 생성 Fsimage하고 Edits다음 직접이 개 파일을로드하지만 처음이 아니다, 파일.
  2. Cli메타 데이터 추가, 삭제 및 수정 요청
  3. NameNode작업 로그를 기록하고 롤링 로그를 업데이트합니다.
  4. NameNode메모리의 데이터를 추가, 삭제 및 수정합니다.

SecondaryNameNode 단계
5 SNN하는 NN여부를 물어 checkPoint
SNN수행하도록 요청 checkPoint
NN스크롤 쓰여지고 Edits저널
NN앞 롤 FsimageEdits파일에 복사 부하 이미지 파일을 메모리로 수정 로그 및 병합 (10)를 새로운 세대의 이미지 파일 및 복사 (11) 이미지 파일 이름 바꾸기SNN
SNN
Fsimage_chkpointNN
NNFsimage
여기에 사진 설명 삽입

아이에게 다시 물어 보셨나요? 파일을 미러링하고 로그를 수정하는 이유는 무엇인가요? 직접 확인해야하므로 자세한 내용은 다루지 않겠습니다.

추천

출처blog.csdn.net/Cxf2018/article/details/109427244