본문 바로가기

EDU

15차시. 빅데이터 저장 기술 기획하기

차시목표
1. 빅데이터 저장 모델을 수립하기 위해서 데이터 처리 요구 사항을 도출하고 도출된 요구 사항에 따라 데이터 저장 방식을 검토할 수 있다
2. 저장 방식에 따라 데이터 처리의 안정성과 신뢰성을 고려한 저장 방안을 선택할 수 있다.
3. 저장된 데이터에 대한 유효성을 검사할 수 있는 검증 방안을 선택할 수 있다.
주요내용
1. 하둡(Hadoop) 분산 파일 시스템 학습하기
2. NoSQL 학습하기
3. 데이터의 용량 산정 학습하기
4. 데이터의 안전성 및 가용성 확보

 

■ 빅데이터 저장 기술 기획하기

1. 하둡(Hadoop) 분산 파일 시스템

- 빅데이터를 저장하는 경우 기존의 파일 시스템에서는 용량이 증가할수록 관리의 효율성과 성능이 저하됩니다. 단일 파일 시스템의 단점을 보완하여 대용량 데이터를 다수 노드에서 처리하기 위한 분산 파일 시스템이 제안되었고, 가장 일반적으로 사용하는 분산 파일 시스템이 하둡의 HDFS(Hadoop Distributed File System)입니다. 

HDFS는 맵리듀스(MapReduce) 기법을 이용하여 효율적으로 데이터를 관리합니다. 

 

● 하둡의 분산 노드


- HDFS는 네임 노드(Name Node)와 데이터 노드(Data Node)로 구성되어 있습니다. 

네임 노드는 마스터 역할을 수행하며, 데이터 노드를 관리합니다. 

HDFS에 대한 메타데이터, 블록, 헬스 체크 기능 등을 관리합니다. 

데이터 노드는 실제로 정보가 저장되는 노드이며, 각 블록은 3개의 노드에 중복 저장됩니다. 

 

① 네임 노드(Name Node) 하둡 시스템에서 가장 큰 단위의 집합 구성이며, 일반적으로 데이터 노드 50개당 1개의 네임 노드를 배정하며, 50개를 넘어가면 신규 네임 노드를 생성합니다. 

네임 노드에 장애가 발생할 경우에는 전체 하둡 파일 시스템에 영향을 주므로 세컨더리 네임 노드를 별도로 구성하여 이중화하도록 합니다. 

② 데이터 노드(Data Node) - 데이터 노드는 1개의 네임 노드에 대해 구성되며, x86 기반의 저비용 서버를 사용하여 하나 이상의 클러스터를 구성합니다. 

● 맵리듀스(MapReduce) - HDFS에서 파일을 저장할 때 병렬 처리를 수행하기 위해 키·밸류(Key-Value) 데이터를 분해하고 정렬해 병합을 수행하는 메커니즘입니다. 

맵리듀스 절차는 스플리트(Split), 맵(Map), 셔플(Shuffle), 리듀스(Reduce)의 과정을 거쳐 최종적으로 파일 데이터를 출력합니다. 

이때 맵리듀스 작업의 수행 단위를 태스크(task)라고 합니다. 

● 맵리듀스의 절차
- 스플리트(Split): 입력 데이터는 스플리트 단위로 쪼개져 각 스플리트마다 하나의 맵 태스크가 할당됩니다. 

- 맵퍼(Maper): 맵 태스크(Map Task)는 각각의 스플리트 데이터를 레코드 (Record) 단위로 읽어서 처리하고, 그 결과를 Key와 Value의 쌍으로 만들어 로컬에 저장한다. 

- 결과 저장: 리듀스 작업까지 완료된 최종 결과는 사전에 설정된 결과 디렉터리에 적재됩니다. 

- 셔플 앤 소트(Shuffle & Sort): 리듀스 태스크에서 개별적으로 처리하는 파티션(Partition) 데이터를 로드하여 병합(Shuffle) 정렬 (Sort)을 수행합니다. 

- 리듀서(Reducer): Key, Value List 정렬이 완료된 다음에 쌍으로 묶어 리듀스 태스크에서 처리합니다. 

 

2. NoSQL

- NoSQL 데이터베이스는 일반적으로 RDBMS에서 사용하는 표준 SQL을 질의어로 사용하지 않는 DBMS로 고정된 테이블 구조를 사용하지 않습니다. 

또 트랜잭션 관리도 엄격하게 적용하지 않습니다. 

RDBMS와 비교해서 데이터의 일관성보다는 성능이나 확장성에 중점을 두고 읽고 쓰는 작업에 최적화되어 있어빅데이터 저장에 적합합니다. 

● CAP(Consistency, Availability, Partition tolerance) 이론

- 데이터 저장 시스템이 가지는 세 가지 특성인 일관성(Consistency), 가용성(Availability), 분할 내성(Partition tolerance)에 대한 이론입니다. 

CAP 이론에서 위 세 가지 특성은 상호 트레이드오프(trade off) 관계가 있으므로 최대 두 가지만 충족할 수 있고, 세 가지 특성을 모두 충족하는 것은 불가능합니다. 

일관성과 가용성을 충족하는 것이 기존의 관계형 데이터베이스의 특성입니다.
 NoSQL의 경우는 일관성과 분할 내성 또는 가용성과 분할 내성을 충족하도록 설계되어 있습니다. 

 

● NoSQL의 종류

- NoSQL은 데이터의 형태 및 스키마의 구조에 따라 Key-Value 기반, 칼럼 기반, 문서 기반의 NoSQL 등으로 구분할 수 있습니다.
 Key-Value 기반 NoSQL은 연관 배열 형태의 데이터 쌍을 처리하는 데 유용합니다. 

또 노드 간의 관계를 표현하는 경우에는 그래프 기반의 NoSQL, 실시간 메시지 처리 등의 고속의 데이터 조회 및 질의를 처리하는 데는 메모리 기반의 NoSQL을 사용 할 수 있습니다. 

 

● 파티셔닝(Partitioning)과 샤딩(Sharding)

① 파티셔닝(Partitioning) 

- 파티셔닝은 기존의 관계형 데이터베이스에서 대용량의 테이블을 분할하는 기법입니다. 데이터 분할은 수직 또는 수평으로 분할을 가합니다. 

수직 분할을하는 경우에는 식별자(KEY)를 통해 조인 연산으로 원래의 테이블을 구성할 수 있습니다. 

수평 분할을 하는 경우에는 유니온(UNION) 연산을 통해 원래의 테이블을 구성할 수 있습니다. 

② 샤딩(Sharding) 

- 샤딩은 테라바이트(TB) 단위의 대량 데이터를 처리하기 위해 데이터를 파티셔닝하는 일종의 수평 분할 기술입니다. 

다수의 노드가 가지고 있는 데이터의 일부분인 샤드라고 부르는 각각의 개별 파티션으로 분할하는 데이터베이스의 수평적 파티셔닝입니다.
 샤딩은 데이터를 여러 서버에 분할하므로 데이터베이스 서버의 스케일 업을 하지 않고도 더 많은 데이터를 저장하고 처리할 수 있습니다. 

 

3. 데이터의 용량 산정

- 데이터를 저장하기 위한 적정한 용량을 산정해야 합니다.

기존 시스템의 용량 산정은 디스크의 RAID 구성, 저널 정보 등을 고려하여 용량을 산정했습니다.

하둡 파일 시스템과 같은 경우는 데이터 노드 간의 파일 복제 수, 블록 사이즈 등을 고려하여 적정 용량을 산정합니다. 

새롭게 수집되거나 생성되는 데이터 증가량에 대해서도 검토가 필요합니다. 

 

● 데이터 품질 기준을 정의하기 위한 방법
- 완전성
- 유일성
- 정확성


● 디스크의 용량 산정 항목
- 시스템 OS 영역: 운영 체제 및 시스템 소프트웨어 등을 위한 영역입니다. 

- 응용 프로그램 영역: 미들웨어 및 응용 소프트웨어 영역, 데이터베이스 설치 영역, 기타 유틸리티 설치 영역 등의 응용 프로그램을 대상으로 합니다. 

- 스왑(SWAP) 영역: 시스템에 장애가 있을 때의 덤프 역할의 수행과 메모리 대용의 효율적인 스와핑을 수행하기 위한 작업 공간을 뜻합니다. 

- 파일 시스템의 오버헤드: 일반 사용자 관리 영역을 위한 슈퍼 유저의 관리 공간 및 아이 노드 오버헤드(I-node Overhead), 슈퍼 블록, 실린더 그룹 등의 파일 관리 공간입니다. 

- 시스템 및 데이터 디스크 여유율: 시스템의 안정된 운영을 위한 보정이며 업무의 중요도나 긴급도를 감안하여 적용합니다. 

- 데이터 영역: 실제 필요한 데이터양을 뜻합니다. 

- 백업 영역: 데이터와 데이터의 변경 내역 정보 등의 백업을 위한 공간을 뜻합니다. 

- RAID 여유율: RAID 디스크가 도입될 경우 데이터의 보호를 위한 패러티 영역입니다.

 

4. 데이터의 안전성 및 가용성 확보

● 데이터의 안전성과 가용성 확보를 위한 전략의 수립
- 일반적인 RDBMS의 경우에는 데이터의 안전성을 확보하기 위해 이중화 구성을 통해 가용성이 충족됩니다.

오라클(Oracle)의 RAC(Real Application Clusters) 기법을 적용하거나, MS-SQL과 같은 경우에는 MS 클러스터를 구성하여 다수의 물리적 노드를 하나의 클러스터로 관리합니다. 

MySQL이나 마리아 데이터베이스(MariaDB)의 경우에는 레플리케이션(Replication)을 적용하여 마스터 노드와 슬레이브 노드의 데이터를 동기화하여 장애에 대비합니다. 

빅데이터 플랫폼에서 사용하는 하둡(Hadoop)이나 NoSQL의 경우에도 노드 장애로부터 데이터의 안전성을 확보하기 위해 데이터의 복제나 노드 분산과 같은 이중화 기법을 사용하고 있습니다


① 하둡(Hadoop)의 데이터 안전성 확보 방안의 검토
- 하둡에서는 데이터 레플리케이션(Data Replication) 기법을 이용하여 기본적으로 데이터를 3개의 노드에 복제하도록 설계되어 있습니다. 

하둡에서 관리하는 데이터 블록은 64 Mb 단위로 관리되며, 데이터를 저장할 때 서로다른 3개의 노드에 블록을 저장 하게 됩니다. 

데이터의 중요성과 노드의 수를 고려하여블록 사이즈와 복제 수량을 조정할 수 있습니다. 

 

② 카산드라(Cassandra)의 컨시스턴트 해싱(Consistent Hashing) 기법 적용의 검토
- 별도의 메타 정보 없이 클러스터에서 키가 저장된 노드를 바로 접근하는 기법 입니다. 

키의 해시값을 계산한 다음에 해시값만으로 노드를 찾아갈 수 있습니다. 

해시 결괏값을 기준으로 관리 대상 노드의 범위를 정합니다. 

노드가 추가 될 경우에는 관리하는 범위가 많은 노드의 영역을 분할하여 신규 노드에 할당 합니다. 

 

③ 몽고DB(MongoDB) 데이터 복제 기법 적용의 검토

- 몽고DB는 마스터 노드의 데이터를 슬레이브 노드로 비동기 복제를 수행합니다. 

슬레이브 노드는 1개 이상의 복수 노드로 구성할 수 있으며, 비동기 복제를 수행하기 때문에 동기화로 인한 데이터 복제 오버헤드가 거의 없습니다. 

슬레이브 노드를 추가하는 경우에도 성능 저하가 발생하지 않는 이점이 있지만, 특정 시점에 데이터의 불일치 현상이 나타납니다. 

슬레이브가 마스터 노드의 로그 정보를 모두 반영하지 못한 상태에서 마스터 노드에 장애가 발생할 경우에는 일정 데이터가 유실되는 단점이 있습니다. 

 

● 데이터의 신뢰성 확보를 위한 방안의 수립
- 수집 및 저장된 데이터의 정확성과 활용도를 높이기 위해서는 데이터의 신뢰성이 가장 중요합니다. 

데이터의 신뢰성을 확보하기 위해서는 저장된 데이터에 대한 품질 관리(DQM: Data Quality Management)가 요구됩니다. 

또 데이터의 결점을 확인하고 보완하기 위한 절차를 마련해야 합니다.

 

HDFS는 네임 노드(Name Node)와 데이터 노드(Data Node)로 구성되어 있다. O
[해설]
HDFS는 네임 노드(Name Node)와 데이터 노드(Data Node)로 구성되어 있습니다. 네임 노드는 마스터 역할을 수행하며, 데이터 노드를 관리합니다. HDFS에 대한 메타데이터, 블록, 헬스 체크 기능등을 관리합니다. 데이터 노드는 실제로 정보가 저장되는 노드이며, 각 블록은 3개의 노드에 중복저장됩니다.
빅데이터를 저장하는 경우 기존의 파일 시스템에서는 용량이 증가할수록 관리의 효율성과 성능이 증가한다. X
[해설]
빅데이터를 저장하는 경우 기존의 파일 시스템에서는 용량이 증가할수록 관리의 효율성과 성능이 저하됩니다. 단일 파일 시스템의 단점을 보완하여 대용량 데이터를 다수 노드에서 처리하기 위한 분산 파일시스템이 제안되었고, 가장 일반적으로 사용하는 분산 파일 시스템이 하둡의 HDFS(Hadoop Distributed File System)입니다. HDFS는 맵리듀스(MapReduce) 기법을 이용하여 효율적으로 데이터를 관리합니다.
샤딩은 테라바이트(TB) 단위의 대량 데이터를 처리하기 위해 데이터를 파티셔닝하는 일종의 수평 분할 기술이다. O
[해설]
샤딩은 테라바이트(TB) 단위의 대량 데이터를 처리하기 위해 데이터를 파티셔닝하는 일종의 수평 분할 기술입니다. 샤딩은 데이터를 여러 서버에 분할하므로 데이터베이스 서버의 스케일 업을 하지 않고도 더 많은 데이터를 저장하고 처리할 수 있습니다.