24
Google 을 을을을을 을을 By Sid 구구구 구구 구구구구

google을 지탱하는 기술

Embed Size (px)

Citation preview

Page 1: google을 지탱하는 기술

Google 을 지탱하는 기술

By Sid

구글의 분산 스토리지

Page 2: google을 지탱하는 기술

Index

1. GFS – 분산 파일 시스템2. Bigtable – 분산 스토리지 시스템3. Chubby – 분산 잠금 서비스4. HDD vs SSD

Page 3: google을 지탱하는 기술

GFSWhat is GFS?

Distributed File System?- 다수의 컴퓨터를 조합 -> Massive storage - 효율적인 데이터 전송

GFS( Google File System ): Google 의 독자적인 distributed file system

- Network 를 통한 read & write- 대용량 파일의 읽고 쓰기 -> 대량기록 , 읽기에 특화- 고장발생을 전제로 설계 -> 독립적인 백업기능- 파일을 cue 로서 사용 -> 끊임없는 data 추가

Page 4: google을 지탱하는 기술

GFSGFS 의 구조

Master – 관리 통제하는 중앙서버

Chunk Server

– HDD I/O 담당

Client – GFS 이용하는 Application

Client Master

ChunkServer

HDD

ChunkServer

HDD HDD HDD

Chunk

64MBChun

k64MB

C.S

C.S

C.Sfile

Page 5: google을 지탱하는 기술

GFSRead & Write

Read– 가장 가까운 서버 이용

Write – 복수의 서버 이용

Client

Master

ChunkServer

ChunkServer

ChunkServer

ChunkServer

ChunkServer

ChunkServer

Client

Master

Sec-ondary

Sec-ondary

Primary

② ③

②③

④ ④

Page 6: google을 지탱하는 기술

GFS문제점 & 해결

Checksum 값으로 error 확인 Checksum : data 의 무결성을 검증하기 위해 만들어진 값 Same data -> Same checksum

Master 가 관리대상에서 제외시킴 Chunk 는 새로운 server 에 할당

관리정보 갱신 시 Operation Log 에 기록 Master 고장 시 Operation Log 읽고 재현

Chunk- Disk 장애- 내용 바뀜

Chunk Server- 통신두절

Master- Master 정지

Page 7: google을 지탱하는 기술

Bigtable거대한 DataBase

값구조화된 data 의 분산스토리지 시스템

Multi Dimensional Sorted Maprow key + column key + time stamp = data

Column 의 수를 자유롭게 증감

RDB data model

Row

Col-umn

Bigtable data model

구조화된data

Row

Row key

Column key

Col-umn Family

Col-umn Family

Time stamp

Page 8: google을 지탱하는 기술

BigtableExample

Row keyCon-

tents:Anchor:example.c

omAnchor:exampl

e.kr

google.com <html>… Google 구글

<html>…

<html>…

완성된 table 예 :

Bigtable 에 저장된 data : Key Data

Google.com+contents:+t1<html>

Google.com+contents:+t2<html>

Google.com+contents:+t3<html>

Google.com+anchor:example.com+t4 Google

Google.com+anchor:example.kr+t5 구글

Page 9: google을 지탱하는 기술

Bigtabletablet

Tablet -Table 을 복수의 Row 로 분할한 것

Locality( 소속성 , 지역성 )-필요한 data 를 한 곳에 모아 locality 높임- [.] 위치에서 domain 을 역전 시킴

Row

Ta-ble

Tablet

Tablet

TabletServer

1

TabletServer

2

Row key data

Com.google.im-age

Com.-google.maps

Com.google.www …

Page 10: google을 지탱하는 기술

BigtableBigtable 의 구조

Master – 전체 통괄

Tablet Server

– tablet 관리

Client – data read & write

Client

MasterChubb

y

TabletServer GFS

TabletServer

TabletServer

Page 11: google을 지탱하는 기술

Bigtabletablet 의 할당

하나의 tablet 은 하나의 tablet server 에 할당

Tablet server 고장-> tablet 을 다른 server 에 할당

하나의 tablet server약 10~1000 개의 tablet 관리

TabletServer

GFSCommit Log

SSTable

SSTable

SSTable

memtable

tablet

tablet

tablet

memtable

memtable

Page 12: google을 지탱하는 기술

Bigtabletablet 의 구조

SSTable- 읽기 전용 검색용 테이블- data 와 index 로 구성- tablet 은 복수의 SSTable 로 구성

Commit Log- tablet 을 수정한 이력이 보존

Memtable- 메모리상에서 수정가능 한 table- Tablet server 내부에 존재

TabletServer

GFSCommit Log

SSTable

SSTable

SSTable

memtable

tablet

tablet

tablet

memtable

memtable

Page 13: google을 지탱하는 기술

TabletServer

Bigtabletablet 의 준비

- Tablet Server 가 빈 memtable 마련

- tablet 구성 할 SSTable index ->memtable 에 넣음

- 복수의 SSTable index -> 하나로 재구성

- commit log 내용 -> memtable 에 적용

GFSCommit Log

SSTable

SSTable

SSTable

memtable

Page 14: google을 지탱하는 기술

TabletServer

Bigtabletablet Read&write

Write- 쓸 내용을 commit log 에 추가- Memtable 업데이트- client 에 결과 전달

Read- Memtable 에서 key 검색- 최근 data 있으면 client 에 반환- SSTable 에 있으면 GFS 로부터 받아서 반환

작업의 대부분이 메모리상에서 수행

GFSCommit Log

SSTable

SSTable

SSTable

memtable

Read

Write

Page 15: google을 지탱하는 기술

BigtableCompaction

Minor Compaction

- Memtable 이 지나치게 커지면 새로운 SSTable 에 기록- 최근 memtable 에 업데이트된 내용만 기록- Commit Log 의 내용 삭제

Major Compaction

- Minor Compaction 을 반복 -> SSTable 너무 많아짐- SSTable 많아지면 읽기 효율 저하 , 디스크 낭비- SSTable 을 하나로 모으는 작업

Page 16: google을 지탱하는 기술

Bigtabletablet 검색Metadata-테이블의 이름과 key 를 통해 tablet 이 있는 장소 알아냄

Chubby

Root tablet

Metadata tablet

User tablet

Page 17: google을 지탱하는 기술

Bigtable성능향상 방법

동시에 이용될 가능성이 큰 column family-> Locality Groups 으로 그룹화-> 그룹마다 SSTable 을 분리

읽기 , 쓰기를 하는 data-> locality group 별로 지정된 방법 통해 자동 압축 , 해제 가능

가능한 tablet server 의 메모리 상에 data 남겨 둠

-> GFS 와의 통신 줄임

대용량 쓰기 요청 받음-> Commit Log 에 기록

Locality Groups

Data compression

읽기 캐시

Commit Log 일괄처리

Page 18: google을 지탱하는 기술

ChubbyChubby 란 ?

분산 시스템의 기반이 되는 시스템

배타제어 가능한 작은 시스템 제공

이벤트 통지에도 이용 -> DNS 대용

파일크기가 아주 작음 (1KB 미만 )

Chubby 의 기능

File SystemLock ServiceEvent notification

Client

Client

Replica

Replica

Master

Replica

Replica

Chubby Cell

HDD

HDD

HDD

HDD

HDD

Page 19: google을 지탱하는 기술

ChubbyFile System

파일에 접근하기

Cell 의 이름을 DNS 에 문의 -> 모든 replica 의 address 구함 임시파일 작성 -> 자신의 상태 알림

Local cell & Global cell

Local cell – 같은 위치의 chubby cell Global cell – 전세계로부터 접근 가능 cell

File read & write

File 읽기 , 쓰기 모두 master 에게 요구 File 의 내용은 local database 에 기록 모든 file, directory 에 ACL(Access Control List)

설정가능

Page 20: google을 지탱하는 기술

ChubbyLock service

파일의 잠금 공유잠금 (Shared Lock) : Reader Mode 배타잠금 (Exclusive Lock) : Writer Mode

외부 리소스의 잠금 GFS 를 Chubby 와 조합함으로 간접적으로 잠금 일정 시간 지나면 잠금 자동해제

시퀀서(Sequencer)

파일에 잠금을 거는 동시에 data(sequencer) 생성 -> 요청유효 확인

페일오버 (fail over)

Chubby 측 장애발생시에도 client 는 처리가능

Page 21: google을 지탱하는 기술

ChubbyEvent notification

Event

-Chubby file 만들거나 그 내용을 update 하면 그것을 감시하고 있는 client 에게 event 전송- 각 server 는 시동 시 자신의 주소를 기록한 file 생성 -> 마스터프로세스는 디렉토리를 감시함으로써 서버의 시동 , 종료 확인

Cache

- Chubby file 을 읽으면 , 그 내용이 client 측에 캐시됨- 마스터의 주소를 조회하는데 편리

Page 22: google을 지탱하는 기술

HDD vs SSDSSD : Solid State Disk 원판을 돌리는 하드디스크와는 달리 SSD 는 플래시 메모리를 사용 빠른 읽기 , 쓰기 속도를 지니고 있고 , 높은 안정성 메모리 특유의 저전력 , 저발열로 전체적인 시스템의 안정성을 이끌어 냄

Page 23: google을 지탱하는 기술

http://www.youtube.com/watch?v=Pf_QS3mZsyU&feature=player_embedded

Page 24: google을 지탱하는 기술

TO BE CONTINUE…