[hadoop] missing block의 이해, 발생원인

rupert·2023년 1월 7일
0

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	 # corrput-block 확인하기

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

corrupt bock 제거

### 1. /lost+found 디렉터리로 corrupt block 이동하고, 복제본을 새로 생성함
$ hdfs fsck -move

### 2. corrupt 파일 삭제
$ hdfs fsck -delete

references

profile
hi there

0개의 댓글