공부하는 내용을 적은 거라 내용이 틀릴 수 있습니다.

 

 

Name Node 가 HDFS 의 메타 데이터(블록 크기, 디렉토리명, 파일명, 상태정보, 접근 권한, 복제 수준, 변경 및 접근 시간 등)를 관리하기 위해

사용하는 사용하는 저장 공간은 총 세 군데.

메모리, 디스크의 edit log, 디스크의 fsimage

 

client 가 HDFS 에 쓰기 동작(파일 생성 혹은 이동 등)을 요청하면,

Name Node 는 그 트랜잭션을 일단 edit log 에 기록하고,

그 후 메모리 상에 상주하는 메타데이터를 변경한다.

(edit log : 클라이언트가 요청한 쓰기 동작의 트랜잭션들을 disk에 저장한 곳)

 

edit log 에 어느정도 데이터가 쌓이거나 일정 주기가 되면

edit log 의 내용을 fsimage 로 적재한다.

fsimage 는 메타데이터의 완전하고 영속적인 체크포인트이자 스냅샷이다.

(fsimage : HDFS 전체 메타데이터를 disk 에 저장한 곳)

 

Name Node 는 메타데이터,네임스페이스 정보를 메모리에 들고 사용한다.

예를 들면 클라이언트가 HDFS 읽기/쓰기 동작 요청을 할 때,

Name Node 는 메모리에서 메타데이터를 참고하여 Node 의 위치를 클라이언트에게 반환해준다.

 

edit log 과 fsimage 만 있으면 Name Node 가 fail 이 나도 복구를 할 수 있다.

Name Node 가 재실행되면, 먼저 disk 에서 fsimage 를 모두 읽고 메모리에 올린다.

그 다음, edit log(아직 fsimage 에 합쳐지지 않은 트랜잭션들) 를 읽어 메모리에 올린다.

그 후에 Data Node 들로부터 파일 위치 등의 메타데이터를 받아오는 절차를 거치지만, [5번 설명 참고]

여튼 fsimage, edit log 를 읽고 메모리에 올려 메타데이터 복구가 가능하다.

복구 한 이후에 Name Node 의 기본 동작이 가능하다.

 

 

 

https://blog.geunho.dev/posts/hadoop-namenode/

https://likebnb.tistory.com/162

 

 

+ Recent posts