Hadoop 3에서 Erasure Coding이란 - 1
- IT 정보/Hadoop Eco System
- 2020. 11. 26.
앞선 글에서는 하둡 3버전을 도입해야하는 3가지 이유에 대해서 이야기 해보았습니다.
2020/11/15 - [IT 정보/Hadoop Eco System] - Hadoop 3 버전을 도입해야하는 3가지 이유
이어서 이번에는 Erasure Coding에 대해 알아보도록 하겠습니다.
이번 Erasure Coding에 대한 글은 한번에 담기에는 부담이 있어 두 개의 포스팅으로 나눠서 이야기하려 합니다.
이번 글에서는 Erasure Coding이 무엇인지 그리고 알고리즘과 정책은 어떤 것이 있는지에 대해 알아보고, 두번째 글에서는 그럼 우리는 어떤 것에 근거하여 어떤 정책을 선택해야하며 무조건 EC가 좋기만 한 것인지에 대해 이야기 해보도록 하겠습니다.
Erasure Coding(EC)이란?
EC란 스토리지에 데이터를 저장할 때 Fault tolerance를 보장함과 동시에 스토리지의 저장 공간 효율성을 높이기 위해 설계된 데이터 복제 방식 입니다. 우선 데이터를 사용되는 알고리즘에 따라 n개의 셀로 나눈 다음에 Erasure Code 코덱을 이용해서 이 나눠진 데이터 셀을 가지고 인코딩하는 과정을 거쳐 k개의 패러티(Parity) 셀을 만들게 됩니다. 이후 데이터셀이나 패러티 셀 중 일부가 유실될 경우 남은 데이터 셀과 패러티 셀을 가지고 디코딩 과정을 거쳐 원래의 데이터를 복구하는 방식 입니다.
Erasure Coding의 알고리즘과 정책
앞서 설명에서 EC는 알고리즘에 따라 데이터를 저장하는 방식에 차이가 있다고 하였습니다. 하둡 3에서는 2가지의 알고리즘 방식과 다섯가지의 세분화된 EC 정책을 가지고 있습니다. 우선 사용가능한 알고리즘에는 Reed Solomon 방식과 XOR 방식이 있으나 XOR 방식은 손실을 허용할 수 있는 최대가 1개의 셀까지만 가능하기 때문에 Fault Tolerance가 제한적이므로 보편적으로 사용되는 방식은 Reed Solomon(RS) 방식입니다.
RS 방식은 선형 대수 연산을 이용하여 여러 패러티 셀을 생성하므로 정책에 따라 여러개의 손실을 허용할 수 있습니다. RS 방식은 n개의 데이터 셀과 k개의 패러티 셀을 매개변수로 사용하므로 RS(n,k)로 정책을 나타냅니다. 이때 데이터 셀을 몇개, 패러티 셀을 몇개로 할지의 비율에 따라 n/n+k 공식을 이용하면 스토리지 효율을 알 수 있습니다.
데이터 복제 정책을 사용하지 않을 경우에 스토리지 효율은 100%가 되고 HDFS 기본 복제정책인 3의 경우에는 약 33%의 효율이 됩니다. 그리고 EC를 사용하여 RS(6,3) 정책을 사용하게 될 경우에는 6/3+6 으로 계산하여 약 67%의 스토리지 효율이 되는 것입니다.
RS에서의 데이터 셀과 패러티 셀 구성은 일반적으로 RS(6,3) 또는 RS(10,4)를 주로 사용합니다. 이때 손실 허용 가능 수는 각각의 패러티 셀 수와 동이하며, 따라서 RS(6,3)에서 최대 3개까지 RS(10,4)는 최대 4개의 손실을 허용하게 됩니다. RS(10,4)의 경우 HDFS 복제 계수 3일때 보다 높은 손실을 허용하면서도 스토리지 효율성은 약 71%로 33%에 비해 훨씬 우수한 효율성을 보여줍니다.
단, 아쉽게도 간단하게 늘 RS(10,4)가 복제 계수 3일 때보다 좋으면 정말 좋겠지만, 그렇지 못하다는 함점이 있습니다. 그렇기 때문에 이 이유에 대한 내용과 그럼 우리는 무엇을 선택하는게 좋을지에 대해서는 다음 글에서 이어서 이야기 해보도록 하겠습니다. 끝.