데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

Hadoop 간단 아키텍처와 Disk RAID구성에 대하여

데이터 이야기
작성자
dataonair
작성일
2015-02-08 00:00
조회
7705


이번 글에서는, 데이터 저장을 위해 가장 많이 사용하는 오픈소스인 HDFS, 즉 Hadoop Distributed File System(하둡 분산 파일시스템)에 대해 간략히 알아보고, 물리적인 HW 구성시 꼭 알아야할 Disk 구성, 즉, RAID(Redundant Array of Inexpensive (Independent) Disks) 구성에 대해 알아보고자 한다.

HDFS(Hadoop Distributed File System)의 물리적 아키텍처


dbin_386.jpg

Hadoop은 잘 아시다시피,
블록 단위로 파일을 보관. 기본 설정은 64MB
분산파일 시스템 : 블록을 다중 노드에 분산해서 보관
Replication : 하나의 블록은 여러 노드에 복제, 특정 노드 장애에 무정지 대응고가용성(High Availability)을 유지,보장하기 위해 데이터를 Replication, 즉, 3배수 복제하여 저장을 하고,
특히, HDFS 2.0 버전 부터는 Name Node를 이중화(Active-Standby) 지원이 가능해졌다.
Name Node의 경우는 이중화가 가능해졌지만, 중요한 정보들을 가지고 있으므로, 물리적으로 Disk 백업체계를 고려해야하며,
Data Node의 경우는 Hadoop이 자체적인 Replication, 즉, 3배수 복제를 해서 고가용성을 보장하기 때문에 물리적인 Disk 백업이 필요치 않다.

RAID(Redundant Array of Inexpensive (Independent) Disks) 구성


Hadoop의 Master Node들과 Slave Node들 각각에 적합한 물리적 디스크 구조를 알아보기 위해 먼저 RAID 구조에 대해 설명하고자 한다.
RAID는 다양한 디스크 배열,구성 방식을 이용하여 중복성을 통해 저장기능과 신뢰성을 제공하는 기술이다.
여러 개의 디스크를 하나로 묶은 Stripe, 중복 저장하는 Mirroing 등을 방식을 묶어 다양하게 디스크를 배열해서 사용하는 것으로
RAID LEVEL 0부터 20여가지의 방식이 있으며, 일반적으로는 0,1,5,10 정도가 사용된다. 나머지는 실제 사용되지 않거나 전문 시스템용이다.
RAID 0
dbin_387.jpg


최소 2개의 디스크 필요
최대 용량 : 디스크의 수 x 디스크의 용량 (ex) 100GB x2 대 = 200GB의 하나의 디스크, 100GB+150GB=200GB 작은 양으로 동일하게 구성됨)
중복 저장 없음(no mirror, no parity)
데이터를 여러 디스크 드라이브에 분산 저장하여 입출력 성능은 뛰어나지만, 백업되는 디스크가 없기때문에 불 style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; FLOAT: none; COLOR: rgb(51,51,51); FONT: 12px/21px verdana, geneva; DISPLAY: inline !important; LETTER-SPACING: normal; BACKGROUND-COLOR: rgb(255,255,255); TEXT-INDENT: 10px; -webkit-text-stroke-width: 0px">Critical System에는 사용하면 안됨. 데이터 입출력 속도가 높아야 하는 환견인 스트리밍 서버나 웹서버, 그래픽 관련에 주로 사용됨

RAID 1
dbin_388.jpg


최소 2개의 디스크 필요
최대 용량 : (디스크의 수/2) x 디스크의 용량 (ex) 100GB x2대 = 100GB)
디스크 미러링, 즉, 데이터 중복 저장함. 2개의 디스크라면 하나는 실제사용하는 디스크, 하나는 백업용 디스크
RAID 0 보다 입출력 성능은 상당히 떨이지지만 안정성은 높다.

RAID 5
dbin_389.jpg


최소 3개의 디스크 필요
최대 용량 : (디스크의 수 -1 ) x 디스크의 용량 (ex) 100GB + 100GB + 100GB = 200GB, 나머지는 패리티 정보저장)
세 개 이상의 디스크를 붙여서 하나의 디스크 처럼 사용하고 각각의 디스크는 패리티 정보를 가지고 있어 하나의 디스크가 깨져도 다른 두개의 디스크를 이용해서 깨진 디스크 복구 가능
RAID 0와 같이 Stripe 되어 있어 RAID 0만큼은 아니지만 입출력 성능이 좋다.
parity를 이용하여 중복저장이 가능
확실하고 안전하게 데이터를 보존할 수 있는 구성으로 알려져 있으며, 일반적으로 DB 스코리지 구성에 적용되고 있다.

RAID 10
dbin_390.jpg


최소 4개의 디스크 필요
RAID 1과 RAID 0 기술 복합, 즉, 4개 이상의 디스크를 2개씩 RAID 1 묶고, 묶은 것을 다시 RAID 0로 Striping
RAID 0의 단점인 안정성의 불안을 없애고, RAID 1의 단점인 입출력 성능을 대폭 향상 시킬 수 있다.
최고의 안정성과 성능을 보장하지만 RAID 구성을 위한 비용이 많이 소모되는 단점이 있다.

HDFS 디스크 RAID 구성


위에서 언급했듯이, Name Node의 경우는 이중화가 가능해졌지만, 중요한 정보들을 가지고 있으므로, 물리적으로 Disk 백업체계를 고려해야하며, Data Node의 경우는 Hadoop이 자체적인 Replication, 즉, 3배수 복제를 해서 고가용성을 보장하기 때문에 물리적인 Disk 백업이 필요치 않다.
따라서, 적어도 Name Node는 RAID 5 또는 여유가 된다면 RAID 10, Data Node는 RAID 0 으로 구성하면 적합하다.

Reference


Hadoop http://hadoop.apache.org/
HDFS Architecture Guide http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html
HDFS High Availability HDFS HighAvailability With NFS