1. HDFS 파일 블록 크기
HDFS의 파일은 물리적으로 블록 (Block)에 저장되며, 블록 크기는 매개 변수로 구성 할 수 있으며 기본값은 128M입니다.
HDFS 파일 블록을 너무 작게 설정하면 주소 지정 시간이 늘어납니다. 너무 크게 설정하면 디스크가 위치 지정 블록의 시작 위치보다 훨씬 긴 시간에 데이터를 전송하게됩니다 .HDFS 블록 크기 설정은 주로 전송 속도에 따라 달라집니다. 디스크의.
둘째, HDFS 쓰기 데이터 프로세스
- 클라이언트
DFS
는NamNode
요청에 파일 을 업로드하여 파일 이NameNode
있는지, 파일의 상위 디렉토리가 있는지 확인합니다. NameNode
업로드하려면 Cli로 돌아갑니다.Cli
첫 번째 데이터 블록 업로드를 요청합니다.NameNode
3 개의DataNode
노드를 반환합니다 .dn1,dn2,dn3
Cli
FSDataOutPutStream
(클래스) 요청을 통해 dn1에 데이터 업로드 요청을 통해 dn1은 dn2를 호출하고 dn2는 dn3을 호출 하여 통신 채널 을 설정합니다.- dn1, dn2, dn3은 단계적으로 Cli에 응답합니다.
- Cli는 dn1 첫 번째 데이터 블록에 업로드를
Block
시작합니다. 디스크에서 시작하여 로컬 메모리 캐시로 데이터를 읽은 다음Package
,Package
회의가 dn2, dn2를 통과 한 후 수신 된 데이터 dn1 dn1 장치를 dn3, dn1로 다시 전송합니다.Package
, 응답을 기다리기 위해 응답 큐에 넣습니다. - 블록이 전송 된 후 Cli는 두 번째 데이터 블록을 업로드하도록 다시 NameNode에 요청합니다.
얘들 아, 인사가 많니? 아무튼 하나 가지고 있으니 먼저 적어주세요 - 6 단계의 단계별 응답은 무엇입니까?
일반적으로이 응답은 파이프 라인의 마지막 데이터 노드에서 시작하여 클라이언트로 전송됩니다. 파이프 라인의 모든 노드는이 응답을 기다립니다. 응답을받은 후 데이터 수락을 시작합니다. 즉, 클라이언트는이 응답을 기다린 다음 데이터 전송을 시작합니다. - 7 단계의 대기열은 무엇을해야합니까?
DFSOutputStream
동시에 또 다른 중간 대기열 ((ack queue)
확인 대기열)이 유지 됩니다. 확인 대기열의 패킷은 파이프 라인의 모든 데이터 노드가 확인 된 후에 만 확인 대기열에서 제거됩니다.
세, HDFS 읽기 데이터 프로세스
Cli
DFS를 통해NameNode
요청할 데이터 다운로드NameNode
메타 데이터를 쿼리 하고 데이터가있는 노드를 반환합니다.Cli
근접성 원칙에DataNode
따라 데이터 읽기 요청을 선택하십시오.DataNode
에 데이터를 전송 하고 장치Cli
를Package
확인합니다.Cli
Package
수락 할 단위를 사용 하여 먼저 로컬로 캐시 한 다음 대상 파일에 기록합니다.
넷째, NameNode의 작동 메커니즘과 SecondaryNameNode의 작동 메커니즘
NameNode 단계
- 시작하는 처음 인 경우
NameNode
, 포맷 생성Fsimage
하고Edits
다음 직접이 개 파일을로드하지만 처음이 아니다, 파일. Cli
메타 데이터 추가, 삭제 및 수정 요청NameNode
작업 로그를 기록하고 롤링 로그를 업데이트합니다.NameNode
메모리의 데이터를 추가, 삭제 및 수정합니다.
SecondaryNameNode 단계
5 SNN
하는 NN
여부를 물어 checkPoint
제 SNN
수행하도록 요청 checkPoint
제 NN
스크롤 쓰여지고 Edits
저널
제 NN
앞 롤 Fsimage
과 Edits
파일에 복사 제 부하 이미지 파일을 메모리로 수정 로그 및 병합 (10)를 새로운 세대의 이미지 파일 및 복사 (11) 이미지 파일 이름 바꾸기SNN
SNN
Fsimage_chkpoint
NN
NN
Fsimage
아이에게 다시 물어 보셨나요? 파일을 미러링하고 로그를 수정하는 이유는 무엇인가요? 직접 확인해야하므로 자세한 내용은 다루지 않겠습니다.