google을 지탱하는 기술
TRANSCRIPT
Google 을 지탱하는 기술
By Sid
구글의 분산 스토리지
Index
1. GFS – 분산 파일 시스템2. Bigtable – 분산 스토리지 시스템3. Chubby – 분산 잠금 서비스4. HDD vs SSD
GFSWhat is GFS?
Distributed File System?- 다수의 컴퓨터를 조합 -> Massive storage - 효율적인 데이터 전송
GFS( Google File System ): Google 의 독자적인 distributed file system
- Network 를 통한 read & write- 대용량 파일의 읽고 쓰기 -> 대량기록 , 읽기에 특화- 고장발생을 전제로 설계 -> 독립적인 백업기능- 파일을 cue 로서 사용 -> 끊임없는 data 추가
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
GFSRead & Write
Read– 가장 가까운 서버 이용
Write – 복수의 서버 이용
Client
Master
ChunkServer
ChunkServer
ChunkServer
ChunkServer
ChunkServer
ChunkServer
Client
Master
Sec-ondary
Sec-ondary
Primary
①
② ③
①
②③
④ ④
GFS문제점 & 해결
Checksum 값으로 error 확인 Checksum : data 의 무결성을 검증하기 위해 만들어진 값 Same data -> Same checksum
Master 가 관리대상에서 제외시킴 Chunk 는 새로운 server 에 할당
관리정보 갱신 시 Operation Log 에 기록 Master 고장 시 Operation Log 읽고 재현
Chunk- Disk 장애- 내용 바뀜
Chunk Server- 통신두절
Master- Master 정지
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
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 구글
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 …
BigtableBigtable 의 구조
Master – 전체 통괄
Tablet Server
– tablet 관리
Client – data read & write
Client
MasterChubb
y
TabletServer GFS
TabletServer
TabletServer
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
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
TabletServer
Bigtabletablet 의 준비
- Tablet Server 가 빈 memtable 마련
- tablet 구성 할 SSTable index ->memtable 에 넣음
- 복수의 SSTable index -> 하나로 재구성
- commit log 내용 -> memtable 에 적용
GFSCommit Log
SSTable
SSTable
SSTable
memtable
TabletServer
Bigtabletablet Read&write
Write- 쓸 내용을 commit log 에 추가- Memtable 업데이트- client 에 결과 전달
Read- Memtable 에서 key 검색- 최근 data 있으면 client 에 반환- SSTable 에 있으면 GFS 로부터 받아서 반환
작업의 대부분이 메모리상에서 수행
GFSCommit Log
SSTable
SSTable
SSTable
memtable
Read
Write
BigtableCompaction
Minor Compaction
- Memtable 이 지나치게 커지면 새로운 SSTable 에 기록- 최근 memtable 에 업데이트된 내용만 기록- Commit Log 의 내용 삭제
Major Compaction
- Minor Compaction 을 반복 -> SSTable 너무 많아짐- SSTable 많아지면 읽기 효율 저하 , 디스크 낭비- SSTable 을 하나로 모으는 작업
Bigtabletablet 검색Metadata-테이블의 이름과 key 를 통해 tablet 이 있는 장소 알아냄
Chubby
Root tablet
Metadata tablet
User tablet
Bigtable성능향상 방법
동시에 이용될 가능성이 큰 column family-> Locality Groups 으로 그룹화-> 그룹마다 SSTable 을 분리
읽기 , 쓰기를 하는 data-> locality group 별로 지정된 방법 통해 자동 압축 , 해제 가능
가능한 tablet server 의 메모리 상에 data 남겨 둠
-> GFS 와의 통신 줄임
대용량 쓰기 요청 받음-> Commit Log 에 기록
Locality Groups
Data compression
읽기 캐시
Commit Log 일괄처리
ChubbyChubby 란 ?
분산 시스템의 기반이 되는 시스템
배타제어 가능한 작은 시스템 제공
이벤트 통지에도 이용 -> DNS 대용
파일크기가 아주 작음 (1KB 미만 )
Chubby 의 기능
File SystemLock ServiceEvent notification
Client
Client
Replica
Replica
Master
Replica
Replica
Chubby Cell
HDD
HDD
HDD
HDD
HDD
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)
설정가능
ChubbyLock service
파일의 잠금 공유잠금 (Shared Lock) : Reader Mode 배타잠금 (Exclusive Lock) : Writer Mode
외부 리소스의 잠금 GFS 를 Chubby 와 조합함으로 간접적으로 잠금 일정 시간 지나면 잠금 자동해제
시퀀서(Sequencer)
파일에 잠금을 거는 동시에 data(sequencer) 생성 -> 요청유효 확인
페일오버 (fail over)
Chubby 측 장애발생시에도 client 는 처리가능
ChubbyEvent notification
Event
-Chubby file 만들거나 그 내용을 update 하면 그것을 감시하고 있는 client 에게 event 전송- 각 server 는 시동 시 자신의 주소를 기록한 file 생성 -> 마스터프로세스는 디렉토리를 감시함으로써 서버의 시동 , 종료 확인
Cache
- Chubby file 을 읽으면 , 그 내용이 client 측에 캐시됨- 마스터의 주소를 조회하는데 편리
HDD vs SSDSSD : Solid State Disk 원판을 돌리는 하드디스크와는 달리 SSD 는 플래시 메모리를 사용 빠른 읽기 , 쓰기 속도를 지니고 있고 , 높은 안정성 메모리 특유의 저전력 , 저발열로 전체적인 시스템의 안정성을 이끌어 냄
http://www.youtube.com/watch?v=Pf_QS3mZsyU&feature=player_embedded
TO BE CONTINUE…