2. 1. GFS – 분산 파일 시스템
2. Bigtable – 분산 스토리지 시스템
3. Chubby – 분산 잠금 서비스
4. HDD vs SSD
3. GFS
What is GFS?
Distributed File System?
- 다수의 컴퓨터를 조합 -> Massive storage
- 효율적인 데이터 전송
GFS( Google File System )
: Google의 독자적인 distributed file system
- Network를 통한 read & write
- 대용량 파일의 읽고 쓰기 -> 대량기록, 읽기에 특화
- 고장발생을 전제로 설계 -> 독립적인 백업기능
- 파일을 cue로서 사용 -> 끊임없는 data 추가
4. GFS
GFS의 구조
Client Master
Master
– 관리 통제하는 중앙서버
Chunk Server Chunk Chunk
Server Server
– HDD I/O 담당
Client HDD HDD HDD HDD
– GFS 이용하는 C.S
Application
C.S
C.S
file
5. GFS
Read & Write
Client Master
Read ①
– 가장 가까운 서버 이용
② ③
Chunk Chunk Chunk
Server Server Server
Write
– 복수의 서버 이용 Client Master
①
③ ②
Chunk Chunk Chunk
Server Server Server
Secondar ④ Primary ④ Secondar
y y
6. GFS
문제점 & 해결
Chunk Checksum값으로 error 확인
Checksum
- Disk 장애
: data의 무결성을 검증하기 위해 만들어진 값
- 내용 바뀜
Same data -> Same checksum
Chunk Server Master가 관리대상에서 제외시킴
- 통신두절 Chunk는 새로운 server에 할당
Master 관리정보 갱신 시 Operation Log에 기록
- Master 정지 Master 고장 시 Operation Log 읽고 재현
7. Bigtable
거대한 DataBase RDB data model
Column
값
구조화된 data의 분산
Row
스토리지 시스템
Multi Dimensional Sorted Map
row key + column key
Bigtable data model
+ time stamp = data
Row key Column key
Row
구조화된
data
Column의 수를 자유롭게 증감
Column Column Time stamp
Family Family
8. Bigtable
Example
완성된 table 예 : Row key Contents: Anchor:example.com Anchor:example.kr
google.com <html>… Google 구글
<html>…
<html>…
Key Data
Bigtable에 저장된 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 구글
9. Bigtable
tablet Table
Row
Tablet Tablet
Tablet Server1
-Table을 복수의 Row로 분할한 것
Tablet Tablet
Server2
Locality(소속성, 지역성)
-필요한 data를 한 곳에 모아 Row key data
locality 높임 Com.google.image …
- [.]위치에서 domain을 역전 시킴 Com.google.maps …
Com.google.www …
10. Bigtable
Bigtable의 구조
Chubby Master
Master
– 전체 통괄 Tablet
Server
GFS
Tablet Server Client
Tablet
– tablet 관리
Server
Client Tablet
– data read & write Server
11. Bigtable
tablet의 할당
Tablet
하나의 tablet은
Server
하나의 tablet server에 할당
GFS
tablet memtable Commit Log
Tablet server 고장
SSTable
-> tablet을 다른 server에 할당 tablet memtable
SSTable
하나의 tablet server tablet memtable SSTable
약10~1000개의 tablet 관리
12. Bigtable
tablet의 구조
SSTable
- 읽기 전용 검색용 테이블 Tablet
- data 와 index로 구성 Server
- tablet은 복수의 SSTable로 구성 GFS
tablet memtable Commit Log
Commit Log SSTable
tablet memtable
- tablet을 수정한 이력이 보존
SSTable
tablet memtable
Memtable SSTable
- 메모리상에서 수정가능 한 table
- Tablet server 내부에 존재
13. Bigtable
tablet의 준비
- Tablet Server가 빈 memtable 마련
Tablet
- tablet 구성 할 SSTable index GFS
Server
->memtable에 넣음 Commit Log
SSTable
- 복수의 SSTable index memtable
-> 하나로 재구성 SSTable
SSTable
- commit log 내용
-> memtable에 적용
14. Bigtable
tablet Read&write
Write
- 쓸 내용을 commit log에 추가
- Memtable 업데이트
Tablet
- client에 결과 전달 GFS
Server
Commit Log
Read
Read SSTable
- Memtable에서 key 검색 memtable
SSTable
- 최근 data 있으면 client에 반환
- SSTable에 있으면 GFS로부터 받아 Write SSTable
서
반환
작업의 대부분이 메모리상에서 수행
15. Bigtable
Compaction
Minor Compaction
- Memtable이 지나치게 커지면 새로운 SSTable에 기록
- 최근 memtable에 업데이트된 내용만 기록
- Commit Log 의 내용 삭제
Major Compaction
Compaction을 반복 -> SSTable 너무 많아짐
- Minor
- SSTable 많아지면 읽기 효율 저하, 디스크 낭비
- SSTable 을 하나로 모으는 작업
17. Bigtable
성능향상 방법
Locality Groups 동시에 이용될 가능성이 큰 column family
-> Locality Groups으로 그룹화
->그룹마다 SSTable을 분리
Data compression 읽기, 쓰기를 하는 data
-> locality group별로 지정된 방법 통해
자동 압축, 해제 가능
읽기 캐시
가능한 tablet server의 메모리 상에 data 남겨 둠
-> GFS와의 통신 줄임
Commit Log 일괄처리 대용량 쓰기 요청 받음
-> Commit Log에 기록
18. Chubby
Chubby 란? Chubby
Cell
Replica HDD
분산 시스템의 기반이 되는 시스템
배타제어 가능한 작은 시스템 제공
Client Replica HDD
이벤트 통지에도 이용 -> DNS 대용
파일크기가 아주 작음(1KB미만) Master HDD
Client
Chubby의 기능 Replica HDD
File System
Lock Service Replica HDD
Event notification
19. Chubby
File System
Cell의 이름을 DNS에 문의
-> 모든 replica의 address 구함
파일에 접근하기
임시파일 작성
-> 자신의 상태 알림
Local cell – 같은 위치의 chubby cell
Local cell & Global cell
Global cell – 전세계로부터 접근 가능 cell
File읽기,쓰기 모두 master에게 요구
File의 내용은 local database에 기록
File read & write
모든 file, directory에 ACL(Access Control List)설정가능
20. Chubby
Lock service
공유잠금(Shared Lock) : Reader Mode
파일의 잠금
배타잠금(Exclusive Lock) : Writer Mode
GFS를 Chubby와 조합함으로 간접적으로 잠금
외부 리소스의 잠금
일정 시간 지나면 잠금 자동해제
파일에 잠금을 거는 동시에 data(sequencer) 생성
시퀀서(Sequencer)
-> 요청유효 확인
페일오버(fail over) Chubby측 장애발생시에도 client는 처리가능
21. Chubby
Event notification
Event
-Chubby file 만들거나 그 내용을 update하면
그것을 감시하고 있는 client에게 event 전송
- 각 server 는 시동 시 자신의 주소를 기록한 file 생성
-> 마스터프로세스는 디렉토리를 감시함으로써 서버의 시동, 종료 확인
Cache
- Chubby file을 읽으면, 그 내용이 client 측에 캐시됨
- 마스터의 주소를 조회하는데 편리
22. HDD vs SSD
SSD : Solid State Disk
원판을 돌리는 하드디스크와는 달리 SSD는 플래시 메모리를 사용
빠른 읽기, 쓰기 속도를 지니고 있고, 높은 안정성
메모리 특유의 저전력, 저발열로 전체적인 시스템의 안정성을 이끌어 냄