33
3 Google의 분산 Storage Sky

3 구글의 분산 스토리지(1)

Embed Size (px)

Citation preview

Page 1: 3 구글의 분산 스토리지(1)

3 장 Google의 분산 Storage

Sky

Page 2: 3 구글의 분산 스토리지(1)

GFS –Google File System

Bigtable –분산 Storage System

Chubby – 분산 잠금 Service

기타 Storage

Page 3: 3 구글의 분산 스토리지(1)

Why?

GFS

GFS의 기능

GFS의 구조

GFS의 읽기 쓰기

정리 –GFS!

Page 4: 3 구글의 분산 스토리지(1)

많은 Computer

대량의 Data 기록

대량의 Data 읽음

Crawler

Crawler

Crawler

Repository

IndexCreation

IndexCreation

IndexCreation

중간 File

Internet

Page 5: 3 구글의 분산 스토리지(1)

대 용량 Storage 전 세계의 Web Page

정보를 처리

Network를 통해 file을읽고 쓰는 System

거대한 Data 통로

File에서 File 로변환하는 Process

Application

G F S

File 1 File 2

Data

DataData

Data

Change

GFS의 구조

Page 6: 3 구글의 분산 스토리지(1)

Data 전송을 위한 특화 설계

Software를 활용한 장애대책

▪ 분산된 Back-up으로 안정성 유지

다른 기능의 감소

파일을 Cue(대기행렬)로서 사용

▪ GFS상의 파일 -> Data의 통로

Page 7: 3 구글의 분산 스토리지(1)

조작 설명

Create 새로운 파일 작성

Delete 기존의 파일 삭제

Open 기존의 파일 연다.

Close 열린 파일을 닫는다.

Read 지정한 위치의 Data를 읽어 옴

Write 지정한 위치에 Data를 기록

Snapshot 파일을 복사

Record Append 파일의 끝에 Data를 추가

Page 8: 3 구글의 분산 스토리지(1)

Master GFS 전체의 상태를 관리 / 통제

Chunk Server 실제 Hard Disk의 입출력을 담당

Client GFS를 이용하여 File을 읽고 쓰는 Application

Chunk (덩어리) GFS상의 파일의 한 Block 단위 : 64MB 보통 3개의 Chunk Server에 복제되어 보관

Page 9: 3 구글의 분산 스토리지(1)

Client

H

ChunkServer

ChunkServer

D D

Master

MasterClient

ChunkServer

ChunkServer

ChunkServer

MasterClient

ChunkServer

ChunkServer

ChunkServer

Secondary SecondaryPrimary

<

읽기>

가까운서버를이용한다

<

쓰기>

복수의서버를이용한다

Page 10: 3 구글의 분산 스토리지(1)

Snapshot 파일의 복사본을 순간적으로 만들어 내는 기능

Copy on Write

GFS에서 파일은 Chunk의 집합

같은 Chunk를 가르키는 새로운 이름의 파일 정보를만드는 기능

Record Append 한 Record의 data를 파일의 마지막에 추가하는 기능

Record : GFS에서 한번에 읽고 쓰는 data의 단위

원자적(Atomic) 쓰기를 위한 기능

추가 실패할 경우

Page 11: 3 구글의 분산 스토리지(1)

출 : The Google File System. Sanjay Ghemawat, Howard Gobioff

Page 12: 3 구글의 분산 스토리지(1)

RDB Vs. Bigtable

Multi Dimensional Sorted Map

Tablet

Compaction

성능향상

정리 – Bigtable!

Page 13: 3 구글의 분산 스토리지(1)

RDB – Relational Database

Bigtalble

구조화된

데이터Row Key Column Family

Row

Row

Column

Column

Time Stamp

Page 14: 3 구글의 분산 스토리지(1)

Row Key

Column Family

Row

Column Key

Time Stamp

Key 값

Row Key + Column Key + Time Stamp Structred Data

.

.

.

<Data Model>

<개념도>

Page 15: 3 구글의 분산 스토리지(1)

복수의 연속하는 Row를 하나로 포괄

복수의 Server로 분산 관리

Locality

Row Key Data

images.google.com ….. …

maps.google.com …

www.google.com …

Row Key Data

com.google.images ….. …

com.google.maps …

com.google.www …

Page 16: 3 구글의 분산 스토리지(1)

SSTable 읽기 전용 검색용 Table

GFS내부에 보관

Data / Index로 구성 -> 빠른 검색

하나의 Tablet은 복수의 SSTable로 구성

Memtable Memory 상에서 수정 가능

Tablet Server 내부에 보관

Commit Log

Page 17: 3 구글의 분산 스토리지(1)

준비

GFSTablet Server

Commit Log

SSTable

SSTable

memtable

읽기 / 쓰기

GFSTablet Server

Commit Log

SSTable

SSTable

memtable

읽기

쓰기

Page 18: 3 구글의 분산 스토리지(1)

Minor Compaction

Memtable 이 지나치게 커짐

새로운 SSTable에 내용 기록

오래된 Commit Log의 정리

Major Compaction

SSTable이 지나치게 늘어남

통합해서 하나의 SSTable로 모으는 작업

Page 19: 3 구글의 분산 스토리지(1)

Metadata Table의 이름과 Key로 Tablet이 있는 장소 지시

Tablet의 마지막 Row Key가 기록

Tablet에 접근 Root Tablet -> Bigtable의 기점

▪ Client -> Chubby ▪ Root Tablet의 정보를 가져옴

▪ Root Tablet -> Key 검색▪ Key가 포함된 Metadata Tablet의 위치 파악

▪ Metadata Tablet -> Key 검색▪ 해당 Tablet의 위치 파악

▪ 읽기 / 쓰기 작업 요청

Page 20: 3 구글의 분산 스토리지(1)

Locality Group

동시에 이용될 가능성 큰 Column Family Group

Data 압축

비교적 큰 data영역으로부터 공유하는 문자열의

Pattern 찾아내서 중복된 data 줄이는 방법

Data를 일정크기로 압축하는 방법

Page 21: 3 구글의 분산 스토리지(1)

읽기 Cache Scan Cache

▪ 최근 Access한 Key에 대응하는 Data 남겨두는 방식

▪ 동일한 Key가 여러반 사용되는 경우 효과적

Block Cache▪ SSTable에서 Data를 읽을 때, 모아진 양을 읽어서 Tablet Server

상에 남겨두는 방식

▪ 연속된 Data를 차례로 읽는 경우 효과적

Commit Log의 일괄처리 (쓰기에서의 개선)

쓰기는 Commit Log를 위해 반드시 GFS에 접근

Commit Log에 한번에 기록하는 양 늘림

요청이 많을때 모두 모아서 Commit Log에 기록

Page 22: 3 구글의 분산 스토리지(1)

Client

Master

GFS

Chubby

TabletServer

TabletServer

TabletServer

Page 23: 3 구글의 분산 스토리지(1)

Chubby

Chubby Cell

Chubby – File System

Chubby – Lock Service

Chubby – Event Notification

Master 결정

Page 24: 3 구글의 분산 스토리지(1)

소 용량, 높은 신뢰성과 편리한 기능

제공하는 분산 Storage

주요 기능

File System

▪ 다른 분산 System의 구축을 위한 기반

Lock Service

▪ 배타 제어

Event Notification

Page 25: 3 구글의 분산 스토리지(1)

Chubby Cell 5개의 machine

으로 이뤄진 Chubby Replica Master

모든 Data Center에하나이상 존재

동시에 몇천~몇만의Client가 Access

Chubby Cell

Master

Client

Client

<Chubby의 전체구조>

Page 26: 3 구글의 분산 스토리지(1)

파일에 접근

Chubby와 GFS의 Name Space는 통합

Local Cell – 가까이 있는 Cell

Global Cell – 전 세계로부터 접근이 가능한 Cell

각종 접근 제어

Media에서 어떤 Service가 작동중인지에 관한 정보

Bigtable의 Metadata가 어디 있는가에 관한 정보

그 밖에 다양한 System설정 파일

Page 27: 3 구글의 분산 스토리지(1)

File의 잠금 Shared Lock – Reader Mode Exclusive Lock –Writer Mode ACL –Access Control List

외부 resource의 잠금 GFS File이 Chubby와 조합하여 간접적으로 잠금

Lock Service

Sequencer 단순한 문자열 Data – 요청이 유효한지 확인

Client가 정지했을때, Lock이 계속 되는 상황을 방지

Page 28: 3 구글의 분산 스토리지(1)

Event Chubby에서 Process가 정지하면 자동삭제 되는 임시 파

일 생성

Master가 자신의 주소를 임시 파일에 기록

임시 파일만 감시

서버의 사활 감시, Master의 치환

Cache Chubby파일 읽은 후, 읽은 내용 Client측에 Cache 로 저장

파일의 내용이 Update될 때 모든 Cache 파기

Adress 취득, Adress 갱신

Page 29: 3 구글의 분산 스토리지(1)

Replica의 합의에 의한 결정 Master는 절반 이상의 Replica가 연결되어 있는 장소

에 나타남

항상 3개 이상의 Replica와 통신 가능 상태

다양한 장애 Master의 고장

절반이상의 고장 –X Replica와의 통신 단절

Master와의 통신 단절

Cell 전체의 통신 단절 –X

C

M

Page 30: 3 구글의 분산 스토리지(1)

Chubby

Chubby Cell

Chubby – File System

Chubby – Lock Service

Chubby – Event Notification

Master 결정

Page 31: 3 구글의 분산 스토리지(1)

OneFS® 운영 체제 software를 사용 – 분산 file system에서 단일 global name space 제공

업계 최초의 유일한 동기식 Cluster Storage Architecture

단일 file system에서 4TB-1.6PB 까지 확장 가능한

시스템 – 기존 storage보다 최대 100배 확장 가능

최대 10GB/초의 유례 없는 총 처리량 – 기존 스토

리지 속도보다 최대 20배 향상

사용하기 쉬우면서도 강력한 Web 기반 관리

60초 내에 용량 및 성능 확장

Page 32: 3 구글의 분산 스토리지(1)

System당 최대 용량 951TB

Storage 당 HA Host 수 512

최대 논리 Unit 수 4096

Storage당 Host Port 수 FC 8개와 iSCSI 4개

System Memory 32GB

Storage 당 Drive 수 480 or 960

Disk 유형 Fibre Channel, SATA II, LP SATA II 및 Flash Drive

지원되는 Host Windows*, Linux*, Solaris*, HP-UX*, AIX*, VMware*

Page 33: 3 구글의 분산 스토리지(1)