SlideShare ist ein Scribd-Unternehmen logo
1 von 24
1.   GFS – 분산 파일 시스템
2.   Bigtable – 분산 스토리지 시스템
3.   Chubby – 분산 잠금 서비스
4.   HDD vs SSD
GFS
What is GFS?


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

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

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

Chunk          Checksum값으로 error 확인
               Checksum
- Disk 장애
               : data의 무결성을 검증하기 위해 만들어진 값
- 내용 바뀜
                Same data -> Same checksum



Chunk Server   Master가 관리대상에서 제외시킴
- 통신두절         Chunk는 새로운 server에 할당



Master         관리정보 갱신 시 Operation Log에 기록
- Master 정지    Master 고장 시 Operation Log 읽고 재현
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
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    구글
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      …
Bigtable
Bigtable의 구조
                               Chubby   Master


Master
– 전체 통괄                        Tablet
                               Server
                                         GFS
Tablet Server         Client
                               Tablet
– tablet 관리
                               Server

Client                         Tablet
– data read & write            Server
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 관리
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 내부에 존재
Bigtable
tablet의 준비


- Tablet Server가 빈 memtable 마련

                                  Tablet
- tablet 구성 할 SSTable index                    GFS
                                  Server
  ->memtable에 넣음                            Commit Log

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

                                              SSTable
- commit log 내용
  -> memtable에 적용
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
서
  반환

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

Minor Compaction

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


Major Compaction
      Compaction을 반복 -> SSTable 너무 많아짐
- Minor
- SSTable 많아지면 읽기 효율 저하, 디스크 낭비
- SSTable 을 하나로 모으는 작업
Bigtable
tablet 검색
Metadata
-테이블의 이름과 key를 통해 tablet이 있는 장소 알아냄          User tablet

                           Metadata tablet




             Root tablet

   Chubby
Bigtable
성능향상 방법

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

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

읽기 캐시
                   가능한 tablet server의 메모리 상에 data 남겨 둠
                   -> GFS와의 통신 줄임


Commit Log 일괄처리    대용량 쓰기 요청 받음
                   -> Commit Log에 기록
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
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)설정가능
Chubby
Lock service


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

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

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


페일오버(fail over)   Chubby측 장애발생시에도 client는 처리가능
Chubby
Event notification


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

Cache
- Chubby file을 읽으면, 그 내용이 client 측에 캐시됨
- 마스터의 주소를 조회하는데 편리
HDD vs SSD
SSD : Solid State Disk
    원판을 돌리는 하드디스크와는 달리 SSD는 플래시 메모리를 사용
    빠른 읽기, 쓰기 속도를 지니고 있고, 높은 안정성
    메모리 특유의 저전력, 저발열로 전체적인 시스템의 안정성을 이끌어 냄
http://www.youtube.com/watch?v=Pf_QS3mZsyU&feature=player_embedded
TO BE CONTINUE…

Weitere ähnliche Inhalte

Andere mochten auch

20150125 AWS BlackBelt - Amazon RDS (Korean)
20150125 AWS BlackBelt - Amazon RDS (Korean)20150125 AWS BlackBelt - Amazon RDS (Korean)
20150125 AWS BlackBelt - Amazon RDS (Korean)Amazon Web Services Korea
 
Tajo_Meetup_20141120
Tajo_Meetup_20141120Tajo_Meetup_20141120
Tajo_Meetup_20141120Hyoungjun Kim
 
구글Fin
구글Fin구글Fin
구글Finzerk87
 
채팅서버의 부하 분산 사례
채팅서버의 부하 분산 사례채팅서버의 부하 분산 사례
채팅서버의 부하 분산 사례John Kim
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCHo Gyu Lee
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개Hyogi Jung
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기iFunFactory Inc.
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문중선 곽
 

Andere mochten auch (12)

IRIS
IRISIRIS
IRIS
 
20150125 AWS BlackBelt - Amazon RDS (Korean)
20150125 AWS BlackBelt - Amazon RDS (Korean)20150125 AWS BlackBelt - Amazon RDS (Korean)
20150125 AWS BlackBelt - Amazon RDS (Korean)
 
Tajo_Meetup_20141120
Tajo_Meetup_20141120Tajo_Meetup_20141120
Tajo_Meetup_20141120
 
구글Fin
구글Fin구글Fin
구글Fin
 
채팅서버의 부하 분산 사례
채팅서버의 부하 분산 사례채팅서버의 부하 분산 사례
채팅서버의 부하 분산 사례
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
What is the meteor?
What is the meteor?What is the meteor?
What is the meteor?
 
모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개모바일 메신저 아키텍쳐 소개
모바일 메신저 아키텍쳐 소개
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
서버 아키텍쳐 입문
서버 아키텍쳐 입문서버 아키텍쳐 입문
서버 아키텍쳐 입문
 

Mehr von sid choi

벤치마킹
벤치마킹벤치마킹
벤치마킹sid choi
 
웹 기획, 사용자를 배려하는 합리적인 생각
웹 기획, 사용자를 배려하는 합리적인 생각웹 기획, 사용자를 배려하는 합리적인 생각
웹 기획, 사용자를 배려하는 합리적인 생각sid choi
 
Google을 지탱하는 기술4
Google을 지탱하는 기술4Google을 지탱하는 기술4
Google을 지탱하는 기술4sid choi
 
Google을 지탱하는 기술5
Google을 지탱하는 기술5Google을 지탱하는 기술5
Google을 지탱하는 기술5sid choi
 
벤치 마킹
벤치 마킹벤치 마킹
벤치 마킹sid choi
 
미코노미
미코노미미코노미
미코노미sid choi
 
웹기획, 사용자를 배려하는
웹기획, 사용자를 배려하는웹기획, 사용자를 배려하는
웹기획, 사용자를 배려하는sid choi
 
Google을 지탱하는 기술2
Google을 지탱하는 기술2Google을 지탱하는 기술2
Google을 지탱하는 기술2sid choi
 
구글을지탱하는기술
구글을지탱하는기술구글을지탱하는기술
구글을지탱하는기술sid choi
 
구글을지탱하는기술
구글을지탱하는기술구글을지탱하는기술
구글을지탱하는기술sid choi
 
구글을지탱하는기술
구글을지탱하는기술구글을지탱하는기술
구글을지탱하는기술sid choi
 
구글을 지탱하는 기술
구글을 지탱하는 기술구글을 지탱하는 기술
구글을 지탱하는 기술sid choi
 
구글을지탱하는기술
구글을지탱하는기술구글을지탱하는기술
구글을지탱하는기술sid choi
 
구글을 지탱하는 기술
구글을 지탱하는 기술구글을 지탱하는 기술
구글을 지탱하는 기술sid choi
 
구글을지탱하는기술
구글을지탱하는기술구글을지탱하는기술
구글을지탱하는기술sid choi
 

Mehr von sid choi (16)

벤치마킹
벤치마킹벤치마킹
벤치마킹
 
Meconomy
MeconomyMeconomy
Meconomy
 
웹 기획, 사용자를 배려하는 합리적인 생각
웹 기획, 사용자를 배려하는 합리적인 생각웹 기획, 사용자를 배려하는 합리적인 생각
웹 기획, 사용자를 배려하는 합리적인 생각
 
Google을 지탱하는 기술4
Google을 지탱하는 기술4Google을 지탱하는 기술4
Google을 지탱하는 기술4
 
Google을 지탱하는 기술5
Google을 지탱하는 기술5Google을 지탱하는 기술5
Google을 지탱하는 기술5
 
벤치 마킹
벤치 마킹벤치 마킹
벤치 마킹
 
미코노미
미코노미미코노미
미코노미
 
웹기획, 사용자를 배려하는
웹기획, 사용자를 배려하는웹기획, 사용자를 배려하는
웹기획, 사용자를 배려하는
 
Google을 지탱하는 기술2
Google을 지탱하는 기술2Google을 지탱하는 기술2
Google을 지탱하는 기술2
 
구글을지탱하는기술
구글을지탱하는기술구글을지탱하는기술
구글을지탱하는기술
 
구글을지탱하는기술
구글을지탱하는기술구글을지탱하는기술
구글을지탱하는기술
 
구글을지탱하는기술
구글을지탱하는기술구글을지탱하는기술
구글을지탱하는기술
 
구글을 지탱하는 기술
구글을 지탱하는 기술구글을 지탱하는 기술
구글을 지탱하는 기술
 
구글을지탱하는기술
구글을지탱하는기술구글을지탱하는기술
구글을지탱하는기술
 
구글을 지탱하는 기술
구글을 지탱하는 기술구글을 지탱하는 기술
구글을 지탱하는 기술
 
구글을지탱하는기술
구글을지탱하는기술구글을지탱하는기술
구글을지탱하는기술
 

Google을 지탱하는 기술3

  • 1.
  • 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 을 하나로 모으는 작업
  • 16. Bigtable tablet 검색 Metadata -테이블의 이름과 key를 통해 tablet이 있는 장소 알아냄 User tablet Metadata tablet Root tablet Chubby
  • 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는 플래시 메모리를 사용 빠른 읽기, 쓰기 속도를 지니고 있고, 높은 안정성 메모리 특유의 저전력, 저발열로 전체적인 시스템의 안정성을 이끌어 냄