[ADP] 2과목 2장. 데이터 처리 기술 이해 :: 데이터 처리 프로세스
2장. 데이터 처리 기술
분산 파일 시스템
[ 구글 파일 시스템 ]
1. 가정
- 저가형 서버로 구성된 환경으로 서버의 고장이 빈번하게 발생할 수 있다.
- 대부분의 파일은 대용량이다.
- 작업 부하는 주로 연속적으로 많은 데이터를 읽는 연산이거나 임의의 영역에서 적은 데이터를 읽는 연산이다,
- 파일에 대한 연산은 주로 순차적으로 데이터를 추가하며 파일에 대한 갱신은 드물게 이루어진다.
- 여러 클라이언트에서 동시에 동일한 파일에 데이터를 추가하는 환경에서 동기화 오버헤드를 최소화할 수 있는 방법이 요구된다.
- 낮은 응답 지연시간보다 높은 처리율이 중요하다.
2. Master node
- 전체를 관리하고 통제하는 중앙 서버
- 단일 마스터 구조 : 모든 메타데이터를 메모리상에서 관리
- 주기적으로 하트비트 메시지를 이용하여 chunk 서버에 저장된 chunk들의 상태를 체크해 상태에 따라 chunk를 재복제한거나 재분산하는 것과 같은 회복 동작 수행
3. Chunk Server
- 물리적인 서버. 실제 입출력을 처리
- 고정된 크기의 chunk들로 나누어 chunk server에 분산/저장된다.
- 클라이언트는 파일에 접근하기 위하여 마스터로부터 해당 파일의 chunk가 저장된 chunk 서버의 위치와 핸들을 받아온다.
- 로컬 디스크에 chunk를 저장/관리하면서 클라이언트로부터의 chunk 입출력 요청을 처리한다.
- chunk는 마스터에 의해 생성/삭제될 수 있으며 식별자에 의해 구별된다.
4. Client
- 파일 입출력을 요청하는 클라이언트 어플리케이션
- POSIX 지원 x. 파일 시스템 인터페이스와 유사한 자체 인터페이스를 지원한다.
[ 하둡 파일 시스템 ]
- 블록구조(Chunk Based) : 기본적으로 3개의 블록 복제본을 저장한다.
- 마스터-슬레이브(Master-Slave) 아키텍처 : 하나의 네임노드와 다수의 데이터노드
1. 네임노드
- 메타데이터 관리 : 네임노드는 클라이언트에게 빠르게 응답할 수 있도록 메모리에 전체 메타데이터를 로딩해서 관리한다.
- 데이터노드 모니터링 : 데이터노드는 3초마다 네임노드에게 하드비트 메시지를 전송한다. (하드비트 : 데이터노드 상태 정보와 데이터노드에 저장돼 있는 블록의 목록으로 구성)
- 블록관리 : 장애가 발생한 데이터노드를 발견하면 해당 데이터노드의 블록을 새로운 데이터노드로 복제한다.
- 클라이언트 요청 접수
2. 데이터노드
- 클라이언트가 HDFS에 저장하는 파일을 로컬 디스크에 유지한다.
- 클라이언트의 데이터 입출력 요청 처리
- HDFS에서 파일은 한 번 쓰이면 변경되지 않는다고 가정한다. 따라서 HDFS는 데이터에 대한 스트리밍 접근을 요청하면 배치 작업에 적합한 응용을 대상으로 한다.
[ 러스터 ]
- 클러스터 파일 시스템에서 개발한 객체 기반 클러스터 파일 시스템
1. 구성
1) 클라이언트 파일 시스템
- 리눅스, VFS에서 설치할 수 있는 파일시스템
- 메타데이터 서버와 객체 저장 서버들과 통신하면서 클라이언트 응용에 파일 시스템 인터페이스를 제공한다.
2) 메타데이터 서버 : 파일 시스템의 이름 공간과 파일에 대한 메타데이터를 관리한다.
3) 객체 저장 서브들
- 파일 데이터를 저장하고 클라이언트로부터 객체 입출력 요청을 처리한다.
- 객체는 객체 저장 서버들에 스트라이핑되어 분산/저장된다.
2. 특징
- 리눅스에서 사용
- POSIX가 호환되는 유닉스 파일 시스템 인터페이스 제공
- 동시 접근이 적을 때는 클라이언트 캐시를 이용한 라이트백 캐시 사용하고 동시 접근이 많으면 클라이언트 캐시를 사용함으로써 발생할 수 있는 오버헤드를 감소시킨다.
- 클라이언트에서 메타데이터 변경에 대한 갱신 레코드를 생성하고 나중에 메타데이터 서버에 전달한다.
- 파일 메타데이터와 파일 데이터에 대한 동시성 제어를 위해 별도의 잠금을 사용한다.
구분 | GFS | HDFS | 러스터 |
Chunk Based | o | o | x |
Support Replication | o | o | x |
POSIX support | x | x | o |
support file modification | x | x | o |
Open Source | o | o | o |
uses a DB for sotring metadata | o | o | o |
데이터베이스 클러스터
- DB를 여러 개의 서버가 나눠서 처리하도록
1. 장점
- 고가용성 : 장애가 발생하더라도 서비스가 중단되지 않음
- 병렬처리 : 빠른 데이터 검색 및 처리 성능
- 성능향상
2. 공유디스크 vs 무공유
1) 공유디스크
- 높은 고장 감내성
- 클러스터가 커지면 디스크 영역에서 병목현상 발생
- 모든 노드가 데이터를 수정할 수 없기에 노드 간의 동기화 작업을 위한 별도의 커뮤니케이션 채널이 필요하다.
- Oracle RAC
2) 무공유
- 노드 확장에 제한이 없다.
- 노드에 장애가 발생할 경우를 대비해 고장감내성을 구성해야한다.
- IBC DB2 ICE
3. Oracle RAC 데이터베이스 서버
- 애플리케이션 파티션과 데이터 파티션이 동시에 구현
- 클러스터의 모든 노드에서 실행되며 데이터는 공유 스토리지에 저장된다.
- 클러스터 내의 모든 노드는 데이터베이스의 모든 테이블에 동등하게 엑세스하며 특정 노드가 데이터를 소유하는 개념은 없다. 따라서 데이터를 파티셔닝할 필요는 없지만 성능 향상을 위해 빈번하게 파티셔닝 된다.
- 가용성, 확장성, 비용절감
4. 마이크로소프트 SQL 서버
- 연합 데이터베이스 형태
- 네트워크를 이용해 연결
- 무공유 / 수평적 분할
- DPV뷰 : 테이블을 논리적으로 분리해 물리적으로 분산된 각 노드에 생성하고 각 노드의 데이터베이스 인스턴스 사이에 링크를 구성한 후 모든 파티션에 대해 UNION ALL을 이용해 논리적인 뷰를 구성하는 방식으로 분산된 환경의 데이터에 대한 싱글 뷰를 제공
- 파티셔닝 정책에 맞게 테이블과 뷰를 생성해야 하고, 전역 스키마 정보가 없기 때문에 질의 수행을 위해 모든 노드를 액세스해야 한다.
- 페일오버 : 평상시 하나의 서버로 운영되고 유사한 서버는 예비로 준비하는 Active-Standby 방식
5. MySQL
- 무공유 구조에서 메모리 기반 데이터베이스의 클러스터링 지원
- 병렬 서버구조로 확장 가능
- 관리노드 : 클러스터 관리 / 클러스터 시작과 재구성 시에만 관여
- 데이터 노드 : 클러스터 데이터 저장
- MySQL 노드 : 클러스터 데이터 접근
6. NoSQL
- Key : Value 형태로 자료 저장
- 빠르게 조회 / 복잡한 Join 연산 기능 x / 대용량 데이터 & 대규모 확장성
- 구글 빅테이블 / 아마존 Simple DB / 마이크로소프트 SSDS
분산 컴퓨팅 기술
[ 맵리듀스 ]
- 데이터를 가져오지 않고 데이터가 저장한 곳에서 처리
- 맵 : 입력 파일을 한 줄씩 읽어 데이터를 변형
- 리듀스 : 맵의 결과 데이터를 집계(shuffle)
- 셔플링 : 리듀스의 입력을 key를 기준으로 정렬 / 맵의 출력이 리듀스의 입력으로 전송하는 과정
- Input > splitting > Mapping > Shuffling > Reducing > Result
- Split Input > Fork Process > Map > Map Worker:Partition > Reduce Sort(Shuffle) > Reduce Function > Done
- 하둡 맵리듀스 시스템 : 클라이언트, 잡트래커, 태스크트래커
[ 병렬 쿼리 시스템 ]
1. 구글 Sawzall
- 맵리듀스를 추상화한 스크립트 형태의 병렬 프로그래밍 언어
- 사용자가 이해하기 쉬운 인터페이스를 제공하여 맵리듀스 개발 생산성을 높인다.
2. 아파치 Pig(야후) : 맵리듀스에서 처리할 수 없는 조인 연산 지원
3. 아피치 하이브
- SQL쿼리를 작성하면 자동으로 맵리듀스 작업으로 변경해준다.
- SQL 기반의 쿼리 언어와 JDBC 지원
- HDFS나 HBASE 같은 빅데이터 원본을 HiveQL 질의 언어를 이용하여 분석한다.
- 하둡 스트리밍을 쿼리 내부에 삽입해 사용할 수 있다.
1) 아파치 하이브 아키텍처
- 메타스토어 : 내장 메타스토어, 로컬 메타스토어, 원격 메타스토어
- 내장형 더비 : 로컬 디스크에 저장. 내장형 메타스토어
- HiveQL : 사용자로부터 입력받은 쿼리를 분석해 쿼리 수행 계획을 작성하고 이에 따르는 맵리듀스 코드 생성
2) 하이브 언어 모델
- DDL : Create Table, Drop Table, Rename Table, Alter Table, Add Column, Show Table, Describe Table
- DML : 로컬에서 DFS로 데이터 업로드, 쿼리 결과를 테이블이나 로컬 파일 시스템/DFS에 저장
- Query : Select, Group by, Joins, Union, Sub Queries, Sampling, Transform
4. SQL on Hadoop
- HDFS에 저장된 데이터를 SQL 혹은 SQL과 유사한 형태로 처리하고 실시간으로 분산처리
- 아파치 Drill, Hive On Tez, 타조, 샤크(Spark SQL), 임팔라, Presto
1) 임팔라
- Hive-SQL 채택
- 분산과 트랜잭션 처리를 모두 지원
- 하둡과 HBase에 저장된 데이터를 대상으로 SQL 질의
- 맵리듀스를 사용하지 않고 실행중에 최적화된 코드를 생성해 데이터를 처리한다.
클라우드 인프라 기술
[ 서버 가상화 기술 ]
- 하나의 서버에서 여러 어플리케이션, 미들웨어, 운영체제들이 서로 영향을 미치지 않으면서 동시에 사용
- 가상머신 사이의 데이터 보호
- 예측하지 못한 장애로부터 보호
- 공유 자원에 대한 강제 사용의 거부
- 서버 통합 : 더 많은 서버 운영
- 자원 할당에 증가된 유연성 : 자원 활용도 극대화
- 테스팅
- 정확하고 안전한 서버 사이징
- 시스템 관리 : 하드웨어 장애, 로드 밸런싱, 업그레이드
1. CPU가상화 : 하이퍼바이저 = 가상머신 = = VMM
1) 하이퍼바이저의 기능
- 하드웨어 환경 에뮬레이션
- 실생환경 격리
- 시스템 자원 할당
- 소프트웨어 스택 보존
2) 완전가상화 : 모든 자원을 하이퍼바이저가 직접 제어&관리
3) 하드웨어 지원 완전가상화
4) 반가상화
- CPU와 메모리 자원의 동적 변경이 서비스의 중단 없이 이루어질 수 있다.
- 완전가상화에 비해 성능이 뛰어남
5) 호스트 기반 가상화 : 호스트 운영체제 위에 하이퍼바이저 탑재
6) 컨테이너 기반 가상화 : 운영체제만을 가상화
2. 메모리 가상화
- Memory ballooning
- Transparent page sharing
- Memory Overcommitment
3. I/O 가상화
- 가상 이더넷
- 공유 이더넷 어댑터
- 가상 디스크 어댑터
'정보수집 > 데이터분석' 카테고리의 다른 글
[ADP] 5과목. 데이터 시각화 (0) | 2020.06.06 |
---|---|
[ADsP/ADP] 4과목. 데이터 분석 (0) | 2020.05.27 |
[ADsP/ADP] 3과목. 데이터 분석 기획 (0) | 2019.11.05 |
[ADP] 2과목 1장. 데이터 처리 기술 이해 :: 데이터 처리 프로세스 (0) | 2019.11.04 |
[ADsP/ADP] 1과목. 데이터 이해 (0) | 2019.11.04 |
Comments