코딩뿌셔
[2과목] 분산 데이터 저장 기술 본문
1. 분산 파일 시스템
- 분산 데이터 저장 기술은 분산 파일시스템, 클러스터, 데이터베이스, NoSQL로 구분됨
- 사용자 중심 인터넷 서비스와 유비쿼터스 컴퓨팅 환경은 대규모 클러스터 시스템 플랫폼 필요성 부각시킴
- 이는 대용량의 저장 공간, 빠른 처리 성능, 확장성, 신뢰성, 가용성 등을 보장해야 함
1-1. 구글 파일 시스템 (GFS; Google File System)
1) 개념 및 특징
- 구글의 대규모 클러스터 서비스 플랫폼의 기반이 되는 파일 시스템
- 파일을 고정 크기(64MB)의 청크들로 나누고, 각 청크에 대한 여러 개 복제본과 청크를 청크서버에 분산/저장
- 청크는 파일이 나누어진 조각의 단위로, 마스터에 의해 생성/삭제될 수 있으며 유일한 식별자에 의해 구별됨
- 트리구조가 아닌 해시 테이블 구조 사용하므로 메모리상에서 보다 효율적인 메타데이터 처리 지원
2) GFS 설계 가정
- 저가형 서버로 구성된 환경으로 서버의 고장이 빈번히 발생할 수 있다고 가정
- 대부분 대용량 파일이라고 가정하므로, 대용량 파일을 효과적으로 관리할 수 있는 방법 요구
- 연속적으로 많은 데이터를 읽는 연산, 임의 영역에서 적은 데이터를 읽는 연산에서 작업 부하 발생
- 파일에 대한 쓰기 연산은 주로 순차적으로 이뤄지며, 파일 갱신은 드물게 이뤄짐
- 여러 클라이언트에서 동시에 동일한 파일에 데이터 추가하는 환경에서 동기화 오버해드 최소화 방법 요구
- 낮은 응답 지연시간보다 높은 처리율이 더 중요함
3) 구성 요소
- GFS는 여러 클라이언트들에 의해 접근되는 하나의 마스터와 청크서버들로 구성
클라이언트 (Client) |
- 파일 읽기/쓰기 동작을 요청하는 애플리케이션 - POSIX 인터페이스 지원 x, 파일 시스템 인터페이스와 유사한 자체 인터페이스 지원 - 여러 클라이언트에서 원자적 데이터 추가 연산을 지원하기 위한 인터페이스 지원 |
마스터 (Master) |
- 단일 마스터 구조 - 모든 메타데이터(시스템 이름 공간, 파일/청크 매핑정보, 청크서버 위치)를 메모리상에서 관리 - 주기적으로 수집되는 청크서버의 하트비트 메시지를 이용하여 청크 상태에 따라 재복제/재분산(회복) - 마스터에 대한 장애처리/회복을 위해 청크 매핑 변경 연산 로깅 |
청크 서버 (Chunk Server) |
- 로컬디스크에 청크를 저장/관리하며 클라이언트로부터 청크 입출력 요청 처리 - 하트비트 메시지를 통해 청크서버의 상태에 대한 정보를 주기적으로 마스터에게 전달 |
1-2. 하둡 분산 파일 시스템 (HDFS; Hadoop Distributed File System)
1) 개념 및 특징
- 아파치 너치 웹 검색 엔진의 파일시스템으로 개발, 구글 파일시스템 아키텍처와 사상을 그대로 구현한 클로닝 프로젝트
- GFS의 마스터와 유사한 하나의 네임노드, 청크서버와 유사한 다수의 데이터노드로 구성
- 파일데이터는 블록(또는 청크) 단위로 나뉘어 여러 데이터노드에 분산/복제/저장
- 기본적으로 파일은 한 번 쓰이면 변경되지 않는다고 가정 (2.0 알파버전 이후 저장된 파일에 append 가능)
- 순차적 스트리밍 방식으로 파일 저장하거나, 저장된 파일을 조회하며 배치 작업에 적합하도록 설계
- 낮은 데이터 접근 지연 시간보다는 높은 데이터 처리량에 중점
- 클라이언트, 네임노드, 데이터노드 간 통신을 위해 TCP/IP 네트워크 상에서 RPC 사용
2) 구성 요소
네임노드 (NameNode) |
- 하둡 분산 파일 시스템 상의 모든 메타데이터 관리하며 마스터/슬레이브 구조에서 마스터의 역할 - 클라이언트로부터의 파일 접근 요청 처리 - 데이터노드에서 하트비트를 받아 데이터노드나 블록 상태 체크 |
데이터노드 (DataNode) |
- 하둡 분산 파일 시스템의 슬레이브 노드, 클라이언트로부터의 데이터 입출력 요청을 처리 - 데이터 유실 방지를 위해 블록을 3중 복제/저장 - 블록 저장 시 블록에 대한 체크섬 정보를 별도 저장 |
보조네임노드 | - HDFS 상태 모니터링 보조, 주기적 네임노드 파일시스템 이미지 스냅샷 생성 |
1-3. 러스터 (Luster)
1) 개념 및 특징
- 클러스터 파일 시스템에서 개발한 객체 기반 클러스터 파일시스템
- 계층화된 모듈 구조로 TCP/IP, 인피니밴드, 미리넷과 같은 네트워크 지원
2) 구성 요소
클라이언트 파일시스템 | - 리눅스 VFS(Virtual File System)에서 설치할 수 있는 파일시스템 - 메타데이터 서버와 객체 저장 서버들과 통신하며 클라이언트 응용에 파일시스템 인터페이스 제공 |
메타데이터 서버 | - 파일 시스템의 이름 공간과 파일에 대한 메타데이터 관리 |
객체 저장 서버 | - 파일데이터 저장, 클라이언트로부터 객체 입출력 요청 처리 - 데이터를 세그먼트(작은 데이터 단위)로 분할해서 복수의 디스크 장치에 분산/저장 (스트라이핑 방식) |
3) 구동 방식
- 유닉스 시맨틱을 제공하면서 파일 메타데이터에 대해서는 라이트백 캐시를 지원
- 이를 위해 클라이언트에서 메타데이터 변경에 대한 갱신 레코드르 생성하고 나중에 메타데이터 서버에 전달
- 파일의 메타데이터와 파일데이터에 대한 동시성 제어를 위해 별도 잠금을 사용함
- 잠금 요청 시 메타데이터 접근의도를 같이 전달하는 인텐트 기반 잠금 프로토콜 사용
2. 데이터베이스 클러스터
1) 개념
- 하나의 데이터베이스를 여러 개의 서버나 가상 서버 상에 구축하는 것
- 데이터베이스 파티셔닝은 데이터베이스를 여러 부분으로 분할 하는 것, 분할된 각 요소를 파티션이라 함
- 각 파티션은 여러 노드로 분할 배치되어 여러 사용자가 각 노드에서 트랜잭션 수행
- 데이터 통합 시, 성능과 가용성 향상을 위해 데이터베이스 차원의 파티셔닝 또는 클러스터링 이용
2) 데이터베이스 파티셔닝 구현 효과
병렬처리 | 파티션 사이의 병렬 처리를 통한 빠른 데이터 검색 및 처리 성능을 얻을 수 있음 |
고가용성 | 특정 파티션에서 장애가 발생하더라도 서비스 중단되지 않음 |
성능향상 | 성능의 선형적인 증가 효과 |
3) 구분
무공유 디스크 | - 각 인스턴스나 노드는 완전 분리된 데이터의 서브집합에 대한 소유권을 가짐 - 대부분의 데이터베이스 클러스터가 무공유 방식 채택(* Oracle RAC 제외) - (장점) 노드 확장에 제한이 없음 - (단점) 각 노드에 장애가 발생하는 경우를 대비하여 별도의 폴트톨러런스 구성이 필요함 |
공유 디스크 | - 각 인스턴스는 모든 데이터에 접근할 수 있고, 데이터 파일을 논리적으로 공유 - 데이터 공유는 SAN(Storage Area Network) 같은 네트워크 반드시 필요 - 모든 노드가 데이터 수정 가능, 노드간 동기화 작업 수행을 위한 별도 커뮤니케이션 채널 필요 - 높은 수준 폴트톨러런스 제공, 하나의 노드만 살아있어도 서비스가 가능 - 클러스터가 커지면 디스크 영역에서 병목현상 발생 |
2-1. Oracle RAC 데이터베이스 서버
1) 개념 및 특징
- Oracle RAC은 공유 클러스터, 클러스터의 모든 노드에서 실행되며 데이터는 공유 스토리지에 저장됨
- 클러스터의 모든 노드는 데이터베이스의 모든 테이블에 동등하게 액세스, 특정 노드가 데이터를 소유하는 개념이 없음
2) Oracle RAC 데이터베이스 서버의 장점
- 가용성 : 높은 수준의 폴트톨러런스를 제공하므로 클러스터 구성 노드 중 하나의 노드만 살아있어도 서비스 가능
- 확장성 : 추가 처리 성능 필요시 응용프로그램이나 데이터베이스 수정 필요 없이 새 노드를 쉽게 추가 가능
- 비용 절감 : 저가형 상용 하드웨어 클러스터에서도 고가 시스템만큼 효율적으로 실행하여 하드웨어 비용 절감
2-2. IBM DB2 ICE
1) 개념 및 특징
- CPU·메모리·디스크를 파티션별로 독립적으로 운영하는 무공유 방식 클러스터링 지원
- 데이터와 사용자가 증가하면 애플리케이션 수정없이 기존 시스템에 노드를 추가하고 재분배하며 시스템 성능과 용량을 일정하게 유지
- 하나의 노드에 장애가 발생할 경우 해당 노드에서 서비스하는 데이터에 대한 별도의 페일오버 메커니즘이 필요
2-3. 마이크로소프트 SQL Server
1) 개념 및 특징
- 연합(Federated0 데이터베이스 형태로 여러 노드로 확장할 수 있는 기능을 제공함
- 연합 데이터베이스는 디스크 등을 공유하지 않는 독립된 서버에서 실행되는 서로 다른 데이터베이들 간 논리적 결합
- 각 노드의 데이터베이스 인스턴스 사이에 링크를 구성한 후 모든 파티션에 대해 UNION ALL을 이용해 논리적 뷰를 구성하는 방식, 분산된 환경에 대이터에 대한 싱글뷰 제공(DPV)
2) 마이크로소프트 SQL Server 구성의 문제점
- DBA나 개발자가 파티셔닝 정책에 맞게 테이블과 뷰를 생성해야 하고, 전역 스키마 정보가 없기 때문에 질의 수행을 위해 모든 노드를 액세스해야 함
- 노드 개수가 작으면 간단히 구성할 수 있지만, 노드가 많아지거나 노드의 추가/삭제가 발생하는 경우 파티션을 새로 구성해야 함(페일오버에 대해서는 별도로 구성해야 함 Active-Standby 방법)
2-4. MySQL
1) 개념 및 특징
- 비공유형으로 메모리(최근 디스크도 제공) 기반 데이터베이스 클러스터링 지원
- 데이터 가용성을 높이기 위해 데이터를 다른 노드에 복제시키며, 특정 노드에 장애가 발생하더라도 지속적 데이터 서비스 가능
- 데이터는 동기화 방식으로 복제되며, 일반적으로 데이터 노드 간 별도의 네트워크를 구성
2) MySQL 클러스터 구성할 경우 제한 사항
- 파티셔닝은 Linear Key 파티셔닝만 사용 가능
- 클러스터에 참여하는 노드(SQL/데이터/매니저 노드) 수는 255로 제한함, 데이터 노드는 최대 48개까지만 가능
- 트랜잭션 수행 중 롤백을 지원하지 않으므로 작업 수행 중 문제 발생한 경우 전체 트랜잭션 이전으로 롤백해야 함
- 하나의 트랜잭션에 많은 데이터를 처리하는 경우 메모리 부족 문제가 발생할 수 있으며 여러개의 트랜잭션으로 분리해 처리하는 것이 좋음
3. NoSQL
1) 개념 및 특징
- 데이터의 폭발적 증가에 대응하기 위해 빅데이터 분산처리 및 저장기술과 함께 발달된 분산 데이터베이스 기술 (가용성, 확장성, 높은 성능 제공)
- 비관계형 데이터베이스 관리 시스템으로 SQL 계열 쿼리 언어 사용 가능
- NoSQL은 저장되는 데이터 구조에 따라 key-value / Document / Graph / Column 모델로 구분됨
- 스키마 없이 동작하며, 구조에 대한 정의 변경 없이 자유롭게 데이터베이스의 레코드에 필드 추가 가능
- 전통적 RDMS 장점인 복잡한 조인 연산기능을 지원하지 않지만 대용량 데이터처리와 대규모 수평적 확장성 제공
- 대부분 오픈소스, 구글 빅테이블, 아파지HBase, 아마존 SimpleDB, 마이크로소프트 SSDS
3-1. 구글 빅테이블
1) 개념 및 특징
- 구글이 대용량 빅데이터를 저장하기 위해 개발한 분산 데이터 관리 저장소, 구글 클라우드 플랫폼에서 데이터 저장소로 사용
- 공유 디스크 방식으로 모든 노드가 데이터, 인덱스 파일을 공유함
- 실시간 서비스 뿐만 아니라 주기적 배치 작업과 대용량 데이터의 분석처리에도 적합하게 구성됨
- 빅테이블과 유사한 솔루션은 아파치 오픈소스 프로젝트 HBase, NHN가 개발한 Neptune
2) 데이터 모델
- 동일한 column-key에 대해 타임스탬프가 다른 여러 버전의 값이 존재할 수 있으며, 타임스탬프는 칼럼 값 버전 관리를 위해 사용
- 빅테이블에 저장되는 하나의 데이터(map)의 키 값 또는 정렬 기준은 '로우식별자 + 칼럼 이름 + 타임스탬프'
3) 페일오버
- 특정 노드에 장애가 발생할 경우, 빅테이블의 마스터는 장애가 발생한 노드에서 서비스되는 Tablet을 다른 노드로 재할당시킴. 재할당 받은 노드는 구글파일시스템에 저장된 변경 로그 파일, 인덱스 파일, 데이터 파일 등 이용해 데이터 서비스를 위한 초기화 작업 수행 후 다시 데이터 서비스를 함
3-2. HBase
- 하둡 분산 파인 시스템(HDFS)를 기반으로 구현된 칼럼 기반 분산 데이터베이스로 파워셋(Powerset) 회사에서 구글의 빅테이블을 모델로 하여 만듦
- HBase는 관계형 구조가 아니며, SQL 지원하지 않음
- 비구조화된 데이터에 적합하며, 대규모의 데이터에서 실시간 읽기/쓰기 작업이 필요할 때 사용할 수 있음
- 노드만 추가하면 선형으로 확장이 가능한 구조, 클러스터를 통한 데이터 복제 기능 제공
- 관계형 데이터베이스와 달리 수평적으로 확장성이 있어 큰 테이블에 적합, 단일행 트랜잭션 보장
- 로우키에 대한 인덱싱만을 지원, Zookeeper를 이용한 고가용성 보장
3-3. 아마존 SimpleDB
- 아마존의 데이터 서비스 플랫폼, 웹 애플리케이션에 사용하는 데이터의 실시간 처리를 지원
- 관계형 데이터 모델과 표준 SQL을 지원하지 않고 전용 쿼리 언어 사용
- 데이터 모델은 Domain, Item, Attribute, Value로 구성되며 스키마가 없는 구조임
3-4. 마이크로소프트 SSDS
- 고가용성을 보장하며 데이터 모델은 컨테이너, 엔티티로 구성됨
- 컨테이너는 테이블과 유사한 개념이나 하나의 컨테이너에 여러 종류의 엔티티 저장 가능
- 엔티티는 레코드와 유사한 개념으로 하나의 엔티티는 여러 개의 property를 가질 수 있으며, property는 name-value 쌍으로 저장
'자격증 > ADP' 카테고리의 다른 글
[4과목] 정형 데이터 마이닝 (0) | 2022.08.14 |
---|---|
[4과목] 통계분석 (0) | 2022.08.14 |
[3과목] 분석 마스터 플랜 (0) | 2022.08.11 |
[3과목] 데이터 분석 기획의 이해 (0) | 2022.08.09 |
[2과목] 분산 컴퓨팅/클라우드 인프라 기술 (0) | 2022.08.09 |
Comments