티스토리 뷰

HDFS Federation

네임 노드는 파일 정보 메타 데이터를 메모리에서 관리한다. 파일이 많아지면 메모리 사용량이 늘어나게 되고, 메모리 관리 문제가 발생한다. 이를 해결하기 위해 하둡 v2부터 HDFS Federation을 지원한다.
HDFS federation은 디렉토리(네임 스페이스) 단위로 네임 노드를 등록하여 사용한다. 예를 들어 user, hadoop, tmp 세 개의 디렉토리가 존재할 때, /user, /hadoop, /tmp 디렉토리 단위로 총 3개의 네임 노드를 실행하여 파일을 관리하게 하는 것이다.


HDFS federation을 사용하면 파일, 디렉토리의 정보를 가지는 네임스페이스와 블록의 정보를 가지는 블록 풀을 각 네임 노드가 독립적으로 관리한다. 네임스페이스와 블록 풀을 네임 스페이스 볼륨이라고 하고 네임스페이스 볼륨은 독립적으로 관리되기 때문에 하나의 네임노드에 문제가 생겨도 다른 네임노드에 영향을 주지 않는다.

HDFS 고가용성

HDFS는 네임 노드가 단일 실패 지점(SPOF)이다. 네임노드에 문제가 발생하면 모든 작업이 중지되고, 파일을 읽거나 쓸 수 없게 된다. 하둡 v2에서 이 문제를 해결하기 위해 HDFS HA(High Availability, 고가용성)을 제공한다.
HDFS 고가용성은 이중화된 두 대의 서버인 Active 네임노드와 Standby 네임 노드를 이용하여 지원한다. 액티브 네임 노드와 스탠바이 네임 노드는 데이터 노드로부터 블록 리포트와 하트비트를 모두 받아서 동일한 메타데이터를 유지하고, 공유 스토리지를 이용하여 에디트파일을 공유한다.
액티브 네임노드는 네임 노드의 역할을 수행하고, 스탠바이 네임 노드는 액티브 네임 노드와 동일한 메타 데이터 정보를 유지하다가 액티브 네임 노드에 문제가 발생했을 시 스탠바이 네임 노드가 액티브 네임 노드로 동작하게 된다. 액티브 네임 노드의 문제 발생을 자동으로 확인하는 것이 쉽지 않기 때문에 보통 주키퍼를 사용하여 장애 발생 시 자동으로 변경될 수 있도록 한다.
HA 모드로 설정하면 스탠바이 네임 노드는 세컨더리 네임 노드의 역할을 동일하게 수행하기 때문에 세컨더리 네임 노드를 실행하지 않아도 된다. HA 모드에서 세컨더리 네임 노드를 실행하면 오류가 발생한다.

QJM(Quorum Journal Manager)


QJM은 HDFS 전용 구현체로, 고가용성 에디트 로그를 지원하기 위한 목적으로 설계되었고 HDFS의 권장 옵션이다.
스탠바이 네임노드를 활성화시키는 전환 작업은 장애복구 컨트롤러(failover controller)라는 새로운 객체로 관리된다. 기본 설정은 단 하나의 네임노드만 활성 상태에 있다는 것을 보장하기 위해 주키퍼를 이용한다.

NFS(Network File System)


NFS를 이용하는 방법은 에디트 파일을 공유 스토리지를 이용하여 공유하는 방법이다.

HDFS 세이프모드

HDFS 세이프모드(safe mode)는 데이터 노드를 수정할 수 없는 상태다. 세이프 모드가 되면 데이터는 읽기 전용 상태가 되고, 데이터 추가와 수정이 불가능하며 데이터 복제도 일어나지 않는다. 관리자가 운영 정비를 위해 세이프 모드를 설정할 수도 있고, 네임 노드에 문제가 생겨서 정상적인 동작을 할 수 없을 때 자동으로 세이프 모드로 전환된다.

세이프 모드 커맨드

세이프 모드 상태의 확인, 진입, 해제 커맨드는 다음과 같다.

hfds dfsadmin -safemode get  # 세이프 모드 상태 확인
hdfs dfsadmin -safemode enter  # 세이프 모드 진입
hdfs dfsadmin -sfaemode leave  # 세이프 모드 해제

세이프 모드 복구

HDFS 운영 중 네임 노드 서버에 문제가 생겨서 세이프 모드에 진입하는 경우는 네임 노드 자체 문제와 데이터 노드의 문제일 경우가 많다.
fsck 명령으로 HDFS의 무결성을 체크하고, hdfs dfsadmin -report 명령으로 각 데이터 노드의 상태를 확인하여 문제를 확인하고 해결한 후 세이프 모드를 해제하면 된다.

HDFS 데이터 블록 관리

HDFS 운영 중 데이터 노드에 문제가 생기면, 데이터 블록에 문제가 발생할 수 있다. CORRUPT 상태와 Under replicated(복제 개수 부족) 상태이다.

CORRUPT BLOCK

HDFS는 하트비트를 통해 데이터 블록에 문제가 생기는 것을 감지하고 자동으로 복구를 진행한다. 다른 데이터 노드에 복제된 데이터를 가져와서 복구한다. 하지만 모든 복제 블록에 문제가 생겨서 복구하지 못하게 되면 CORRUPT 상태가 된다. CORRUPT 상태의 파일들은 삭제하고, 원본 파일을 다시 HDFS에 올려주어야 한다.

Under replicated

파일에 지정된 복제 개수만큼 데이터 블록에 복제되지 않았을 때 발생한다. 데이터 노드의 개수보다 복제 개수를 많이 지정할 때 발생할 수 있다. fsck 명령으로 복제 개수가 부족한 파일을 확인할 수 있으며, 복제 개수가 부족한 파일은 hadoop fs -setrep 명령을 통해 복제 개수를 늘려주면 된다.

'Data Engineering > Hadoop' 카테고리의 다른 글

[Hadoop] MapReduce  (0) 2022.12.17
[HDFS] HDFS의 정의와 구조  (0) 2022.10.25
하둡(Hadoop)이란?  (0) 2022.10.23
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함