본문 바로가기

MLOps/Data

지우개 아니고 Erase coding in hadoop 3.x

Erase Coding 이란? What's the Erase coding in hadoop 3.x!!

Erase Coding  왜 사용?

  • HDFS 기본 복제 체계는 스토리지 공간 및 기타 리소스에 200% 오버헤드가 있음.
  • 기본적으로 1개의 원본과 2개의 복제본을 생성하기 때문임
  • 따라서 동일한 수준의 내결함성을 제공하고 훨씬 적은 저장 공간을 사용하는 EC(Erase Coding)을 사용

Erase Coding Schema

아래는 하둡 문서에서 가져왔다.

The EC schema: This includes the numbers of data and parity blocks in an EC group (e.g., 6+3), as well as the codec algorithm (e.g., Reed-Solomon, XOR).

Codec (인코딩/디코딩) 알고리즘으로 Reed-Solomon, XOR 이 존재하고 데이터/패리티 비트랑 알고리즘을 묶어서 EC 그룹이라고 한다.


1. XOR

  • 다른 EC 알고리즘에 비해 상대적으로 간단
  • 데이터 비트에 대해 비트별 XOR 연산을 수행해서 패리티 비트를 생성
XOR 연산은 다르면 1, 같으면 0을 출력하는 논리 연산

3개의 데이터 블록 (D1, D2, D3)을 가지고 패리티 블록(P1) 생성

  1. 원본 데이터를 D1, D2, D3의 3개의 동일한 크기의 데이터 블록으로 나눔
  2. 데이터 블록에 대해 블록(비트) 별 XOR을 수행해서 패리티 블록(비트) P1을 생성함

P1 = D1 ⊕ D2 ⊕ D3.

 

이제 데이터 블록 중 D2에 결함이 생긴 경우, 복구 과정은

D2 = D1 ⊕ D3 ⊕ P1.

끝이다.  

 

장점은 간단하다.

하지만 너무 간단한 나머지 내결함성에서 제한적이다.

구현에 따라 하나 또는 두 개 블록에 대한 손실을 허용하는데 다중 오류를 허용해야 하는 HDFS에서는 적합하지 않다.


이런 제한적인 내결함성을 해결하기 위해서 사용하는 것이 바로

2. Reed-Solomon(RS)

GT(Generator Matrix, 생성행렬)를 사용하는 Reed- Solomon 방법은  선형 대수 연산을 통해 데이터/패리티 비트를 생성

가볍게  방법 론 보려고 한 건데 행렬 나오길래.. 너무 뇌절까지 왔나 싶기도 했다

데이터 벡터

  • 원본 데이터를 K개의 동일한 크기의 데이터 블록으로 나누고 벡터 D로 나열

유한체(Galois Field)

  • 일반적으로 GF(2^m) 선택
  • m은 블록의 최대 수 (k+m)을 나타내는 데 필요한 비트 수
  • 따라서 일반적으로는 GF(2^8), 256개 사용

Generative Matrix(생성기 행렬)

  • 갈루아 필드 사용해서 (k*m) * k의 생성기 행렬 'G' 구성
  • 행렬 'G'는 행렬 I와 행렬 V의 연결임 
  • G : k * k 크기의 항등 행렬 'l' , 대각선에는 1이 있고 다른 곳에는 0이 있음
  • V :  k * m 크기의 Vandermonde 행렬, 요소의 연속 거듭 제곱을 사용해 구성

Generative Matrix

G = | I | V |

인코딩

  • 행렬 G와 데이터 벡터 D 사이에 행렬 곱셈 수행하여 크기 (k+m) * 1의 새로운 벡토 'C' (CodeWord) 생성
  • 벡터 C는 데이터/패리티 비트 모두 가지고 있음
C = G * D

디코딩

  • 원본 데이터를 디코딩해서 복구하기 위해 Berlekamp-Massey 알고리즘이나 Euclidean 알고리즘(유클리드 호제법)을 사용해 디코딩하거나 GT의 역행렬 사용

장점은

제한적인 XOR 방식과는 다르게 최대 'm' 개 패리티 블록 손실에 대응이 가능


3. 하지만

Erase Coding 방식은 데이터를 복구하는 기법 중 하나이지, 데이터 백업을 대체하는 방식은 아님


Reference

 

A performance evaluation and examination of open-source erasure coding libraries for storage | Proccedings of the 7th conference

ABSTRACT Over the past five years, large-scale storage installations have required fault-protection beyond RAID-5, leading to a flurry of research on and development of erasure codes for multiple disk failures. Numerous open-source implementations of vario

dl.acm.org

 

 

Apache Hadoop 3.3.5 – HDFS Erasure Coding

<!--- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or a

hadoop.apache.org