hdfs --daemon start journalnode
등장 배경)
<aside>
💡 하둡1버전은 네임노드에서만 editlog, 즉, 변경 사항을 저장하였다.
하둡2버전 부터는 여러 서버에 editlog를 복제해서 저장한다.
이를 위해 하둡은 저널노드(JournalNode)라는 새로운 컴포넌트를 제공하게 되었는데, 이는 별도의 데몬으로 실행된다.
</aside>
*데몬 : 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램
역할)
<aside>
💡 HDFS에 저장된 파일을 수정할 경우 editlog가 발생한다. JournalNode의 역할은 HDFS상에 존재하는 파일들에 변경이 생기는 경우 이를 NN간 공유 시켜주는 역할을 한다.
이러한 저널노드의 역할을 통해 네임노드가 전환되는 과정에서도 최신 블록의 상태로 파일을 생성하여 동작이 중단되지 않고 바로 정상적으로 동작이 가능하다.
</aside>
JournalNode 특징)
- editlog자신이 실행되는 서버의 로컬디스크에 저장한다.
- NN은 클라이언트가 되어 JournalNode 접근 후 저장을 요청
- 기본적으로 리소스를 적게 사용하기 때문에 네임노드, 잡트래커, 리소스매니저와 같은 데몬이 실행중인 서버에도 함께 구동이 가능
- editlog 저장 권한은 액티브 NN만 존재하고, 스탠바이 NN는 조회 요청만 가능
- JournalNode는 최소 3대 이상의 서버에서 실행되어야 하고, 홀수 단위로만 실행 가능하다.
- JournalNode가 실행될 때 최대 (N-1)/2의 장애까지 허용하는 것 때문에 3개 이상의 홀수 개로 유지해서 JournalNode 한 대에 장애가 발생하는 경우에도 HA 기능이 정상적으로 동작하게 하기 위함이다.
- 절반 이상의 JournalNode가 동작 중이어야 editlog 를 파일이미지(fsimage)에 반영할 수 있다.
- NN가 JournalNode의 장애 발생에 영향을 받지 않기 위해선 (전체 JournalNode 설치 수/2)+1 만큼 실행되어야 한다.
메타데이터 파일 종류
<aside>
💡 Fsimage 파일
Edits 파일
- 파일의 생성, 삭제에 대한 트랜잭션 로그
- 메모리에 저장하다가 주기적으로 생성
</aside>