본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

이레이저 코딩(Erasure Coding, EC)은 데이터를 k 개의 데이터 조각으로 나누고 그로부터 계산한 m 개의 패리티 조각을 더해 서로 다른 디스크나 노드에 나누어 저장함으로써, 조각 m 개까지를 잃어도 나머지로 원래 데이터를 되살리게 하는 데이터 보호 기법이다.

분산 저장 시스템은 흔히 같은 데이터를 여러 벌 복제해 장애에 대비한다. 복제는 단순하지만 공간을 많이 쓴다. 아파치 하둡의 HDFS 는 기본으로 블록을 3벌 복제하는데, 하둡 문서는 이 방식이 저장 공간과 네트워크 대역폭에서 200% 의 오버헤드를 낸다고 설명한다. 이레이저 코딩은 같은 수준의 고장 허용을 훨씬 적은 공간으로 얻는 방법으로, 전형적인 구성에서 저장 오버헤드가 50% 를 넘지 않는다.[1]

원리는 RAID 의 패리티와 같다. 연속된 데이터를 일정 크기의 셀로 잘라 여러 디스크에 차례로 나누어 쓰는 스트라이핑을 하고, 한 스트라이프의 데이터 셀들로부터 패리티 셀을 계산해(인코딩) 함께 저장한다. 어느 셀이 망가지면 남은 데이터 셀과 패리티 셀로 계산해(디코딩) 되살린다.[1] RAID 5 는 패리티 하나(m = 1), RAID 6 은 패리티 둘(m = 2)을 쓰는 이레이저 코드로 볼 수 있다. 세프(Ceph) 문서는 이레이저 코드를 전진 오류 정정(forward error correction) 부호의 한 갈래로 소개한다.[2]

  • k - 원래 데이터를 나눈 데이터 조각(data chunk) 수
  • m - 추가로 만든 패리티 조각(coding chunk) 수. 동시에 잃어도 되는 조각(디스크, 노드) 수와 같다
  • 공간 배수 - (k + m) / k. 세프 문서의 예로 k = 4, m = 2 이면 1.5배로, 1GiB 를 저장하는 데 1.5GiB 를 쓴다. 3벌 복제의 3.0배와 대비되지만, 복구할 때 성능 부담이 크다는 대가가 있다[2]
  • 부호 - 리드-솔로몬(Reed-Solomon, RS) 부호가 표준이고, 패리티가 하나일 때는 XOR 로 충분하다
방식 원본 6블록을 저장하는 데 드는 블록 견디는 고장 공간 배수
3벌 복제 6 × 3 = 18 2개 3배(오버헤드 200%)
RS(6, 3) 이레이저 코딩 6 + 3 = 9 3개 1.5배(오버헤드 50%)
RS(10, 4) 이레이저 코딩 10 + 4 = 14 (원본 10블록 기준) 4개 1.4배

하둡 문서는 3벌 복제한 6블록 파일이 18블록을 쓰는 데 비해 데이터 6, 패리티 3 의 EC 로는 9블록이면 된다고 든다.[1]

하둡 3.0 의 HDFS 이레이저 코딩

편집 원본 편집

HDFS 이레이저 코딩은 하둡 3.0.0(2017년 12월)에서 새로 들어온 기능이다. 하둡 3.0.0 릴리스 문서는 2.x 대비 주요 개선으로 자바 최소 버전 8, HDFS 이레이저 코딩, YARN 타임라인 서비스 v.2, 셸 스크립트 재작성, 기회적 컨테이너(opportunistic container), 세 개 이상의 네임노드 지원 등을 들고, Reed-Solomon(10, 4) 은 공간 오버헤드가 1.4배로 표준 3벌 복제의 3배보다 훨씬 작다고 적는다.[3]

  • 정책 이름은 '부호-데이터 블록 수-패리티 블록 수-셀 크기' 꼴이다. RS-3-2-1024k, RS-6-3-1024k, RS-10-4-1024k, XOR-2-1-1024k 등이 내장되어 있고 기본 정책은 RS-6-3-1024k 이다[1]
  • EC 를 적용한 파일의 복제 계수는 의미가 없어 항상 1 이다[1]
  • 데이터노드가 고장 난 블록을 다른 블록들로부터 디코딩해 되살리며, 복원할 때 여러 노드에서 읽어 와야 해 네트워크와 CPU 부담이 크다. 그래서 자주 읽지 않는 차가운(cold) 데이터에 주로 쓴다[3]
  • YARN(자원 관리)과 ResourceManager 는 하둡 2.0 에서 들어왔고, Secondary NameNode 는 하둡 1.x 부터 있던 구성 요소이다. 하둡 3.0 에서 처음 들어온 기능과 구별한다
구분 복제(replication) 이레이저 코딩
공간 효율 낮다(3벌이면 3배) 높다(보통 1.4~1.5배)
쓰기 사본을 그대로 보낸다 패리티를 계산해야 해 CPU 를 더 쓴다
읽기 가까운 사본 하나만 읽는다 정상일 때는 데이터 조각을 모아 읽고, 고장이 나면 디코딩이 필요하다
복구 남은 사본을 복사한다 k 개 조각을 읽어 다시 계산한다(복구 트래픽이 크다)
알맞은 데이터 자주 읽고 쓰는 뜨거운 데이터 오래 보관하는 차가운 데이터, 대용량 객체 저장
  1. ↑ 1.0 1.1 1.2 1.3 1.4 「HDFS Erasure Coding」, Apache Hadoop 3.0.0 문서, https://hadoop.apache.org/docs/r3.0.0/hadoop-project-dist/hadoop-hdfs/HDFSErasureCoding.html, 확인일: 2026-11-04.
  2. ↑ 2.0 2.1 「Erasure code」, Ceph Documentation, https://docs.ceph.com/en/latest/rados/operations/erasure-code/, 확인일: 2026-11-04.
  3. ↑ 3.0 3.1 「Apache Hadoop 3.0.0」 릴리스 개요, Apache Hadoop, https://hadoop.apache.org/docs/r3.0.0/index.html, 확인일: 2026-11-04.