block?
file ∋ block ∋ replica
missing block?
- 일반적으로 하둡의 block은 3개의 replica(복제본)으로 관리함(옵션에 따라 조정됨)
- 데이터나 저장소의 손상으로 block이 손실될 수 있으며, 이는 missing block, corrupt block 이라고 표현함 (ref)
missing block
- 클러스터 어디에서도 복제본을 찾을 수 없는 block (복구불가능)
corrupt block
- block 복제본 중 손상이 발생한 것
- 일반적으로 corrupt block이 발생했을때, 네임노드는 손상되지 않은 block을 활용해 복제개수(보통 3개)에 도달할 때까지 복제함
- 복구 가능한 상황에서는 별도 리포트도 하지 않는게 기본옵션이라 함
왜 발생할까?
대체적으로 파일시스템 에러
- 파일시스템 마운트 누락 → 재 마운트시 복구
- 데이터 노드가 실행되지 않음 → 데이터노드 실행시 복구
- 파일 시스템이 다시 포맷되는경우
내가 겪은 발생원인 / 결과
- 하둡 YARN 클러스터의 일부 데이터노드가, 데이터센터 장애로 인해 shutdown 됨
- shutdown된 노드가 많아서, block 중 일부에서 missing block이 발생(여러 데이터 노드에 복제가 되어있었지만, 막지는 못함
- 다행히 시간이 지남에 따라,
데이터센터 복구로 missing block은 해소되었지만, 일부 빠르게 필요한 데이터는 소스 데이터로 재생성하는것으로 해결
corrupt, missing block 복구
- 하둡에서는 기본적으로 corrupt block 을 남겨두지만, 아래의 명령어로 block을 정리가능
corrupt block 확인
$ hdfs fsck -list-corruptfileblocks
Connection to namenode via http://hadoop-test-001.test.com:50070
The list of corrupt files under path '/' are:
blk_190281477 /user/zz/math/knntest.parquet
The filesystem under path '/' has 1 CORRUPT files
$ hdfs fsck -move
$ hdfs fsck -delete
references