google을 지탱하는 기술] 제3장

19
Google 을 을을을을 을을 3. 을을을 을을 을을을을 Digital Content Tom

Upload: slpenbi

Post on 14-Nov-2014

129 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Google을 지탱하는 기술] 제3장

Google 을 지탱하는 기술

3. 구글의 분산 스토리지

Digital ContentTom

Page 2: Google을 지탱하는 기술] 제3장

목차• GFS(Google File System) - 정의 및 특징 - 문제점 및 장애 - 구조 및 읽기 , 쓰기 • Bigtable- 분산 스토리지 시스템 -Bigtable vs RDB -Tablet -Table - 성능향상 방법 - 구조• Chubby- 분산 잠금 서비스 - 정의 및 구조 - 특징• Tip

Page 3: Google을 지탱하는 기술] 제3장

GFS(Google File System)

• 정의 및 특징 -GFS 란 ? 대용량 data 를 읽기 , 쓰기를 위한 기반 기술로서 대용량 파일을 고속으로 전송하고 안전하게 보관하는 기술

<GFS> < 일반 FS>

다수의 HDD를 조합

-> 보다

효율적취급하

는 파일이 거대

파일에 대해 항상

복사본 유지

업데이트 하지 않고 , 기록된 것을

읽기만 한다

Page 4: Google을 지탱하는 기술] 제3장

GFS(Google File System)

• 구조 -Master: GFS 전체의 상태를 관리하고 통제하는 중앙 서버 -Chunk Server: 실제 HDD 의 입출력 담당 -Client: GFS 를 이용해 파일을 읽고 쓰는 Application

Client Master

Chunk S Chunk S

Chunk

64MB

Chunk S

Chunk S

Chunk S

Page 5: Google을 지탱하는 기술] 제3장

GFS(Google File System)

• 읽기 • 쓰기

세컨드리 프라이머리 세컨드리

Client Master

Chunk S

Chunk S

Chunk S

Client 가 Master 에게 Chunk와 Chunk S 에 관한 정보를 알아내 그중 가장 가까이 있는 곳에 있는 Chunk S 를 골라

data 요청

Client Master

Chunk S

Chunk S

Chunk S

Primary 는 data 의 기록 과정을 통제하고 Client 는 가장 가까운

Chunk S 로 data 를 전송한다 . 이후 data 를 받지 못한 Chunk S 들에게

data 를 복사한다

Page 6: Google을 지탱하는 기술] 제3장

GFS(Google File System)

• 문제점 및 장애 -Client 가 기록할 data 가 여러 개의 Chunk 로 나뉜 경우 “ 원자적 쓰기” - 관련 있는 data 를 한데 모으는 Record 를 이용해 하나의 처리가 마지막까지 중단되지 않고 단번에 이루어지게 설계 - 스냅샷 file

“copy on write” file

Chunk

Chunk

Chunk

Chunk

스냅샷

Page 7: Google을 지탱하는 기술] 제3장

GFS(Google File System)

• 문제점 및 장애

Chunk Chunk Server

Master

문제점 Disk 장애읽을 내용

변경

통신두절 Master 정지

해결책 Chunk Server 의

Checksum으로 감지

Client 는 다른 Chunk S 에

접속 , Master에게 새로운 Server 를 할당 받음

Operation Los 에

변경내용을 항시 기록해 , 그것을 이용해 고장 직전으로

재현

Page 8: Google을 지탱하는 기술] 제3장

Bigtable- 분산 스토리지 시스템Bigtable Table RDB Table

columnrow

row key column family

row

Column

Time stamp

구조화된 데이터

Page 9: Google을 지탱하는 기술] 제3장

Bigtable- 분산 스토리지 시스템• Table -Bigtable 에서의 Table 은 처음에 row key 와 column Family 에 의해

정의된다

< 완성된 Table 의 >

<Bigtable 에 저장된 정보 >

Row key Contents: Anchor:example.com

Anchor:example.kr

Google.com <html> **** Google 구글

<html> ****

<html> ****

key 값Google.com + contents:+t1 <html> ***Google.com + contents:+t2 <html> ***

Google.com + anchor:example.com+t3 Google

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

Page 10: Google을 지탱하는 기술] 제3장

Bigtable- 분산 스토리지 시스템• 구조 - 다수의 Server 로 Table 을 분산처리 한다 -Master: Bigtable 의 전체 통괄 -Tablet Server: Tablet 을 관리

-Client: data 를 읽고 쓰는 역할

Master

ClientGFS

Chubby

Chunk S

Chunk S

Chunk S

Page 11: Google을 지탱하는 기술] 제3장

Bigtable- 분산 스토리지 시스템Tablet

TableRow

Tablet

Tablet Server

Server

Server

로그

데이터

데이터

데이터

관리정보

관리정보

관리정보

Table Tablet Tablet Server GFS

Page 12: Google을 지탱하는 기술] 제3장

Bigtable- 분산 스토리지 시스템Tablet 분할 , 결합

Table1:Z

Tablet 검색

A

Z

Table1:m

Table1:Z

A

M

N

Z

SSTable

SSTable

Chubby

Root tablet

Meta data tablet

User tablet

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

Page 13: Google을 지탱하는 기술] 제3장

Bigtable- 분산 스토리지 시스템• Bigtable 의 성능 향상 방법

Locality Groups

• 동시에 사용 가능성이 큰 Column Family 를 Locality Groups 으로 그룹화하고 , 그룹마다 SSTable 을 분리할 수 있다 .

데이터 압축

• 읽기 , 쓰기를 하는 데이터는 Locality Groups 별로 지정된 방법을 통해 자동으로 압축하고 해제할 수 있다 .

읽기 캐시• Data를 읽어올 때 매번 SSTable로 데이터를 가지러 가는 것이 아니라 가능한 한 Tablet Server의 메모리상에 데이터를 남겨두어

성능을 개선한다 .

Commit 로그의 일괄 처리• Client 로부터 한번에 대용량 쓰기 요청을 받은 경우 , 그것들을 일일이 순서대로 처리하는 것이 아니라 모두 모아서 Commit 로그에

기록한다 .

Page 14: Google을 지탱하는 기술] 제3장

Chubby- 분산 잠금 서비스• Chubby 란 ? - 소용량이면서도 높은 신뢰성과 몇몇 편리한 기능을 제공하는 분산

스토리지 . 단독으로 사용되고 , 다른 분산 시스템을 구축하기 위한 기반으로 사용됨

<Chubby 의 전체구조 >

Client

Client

Master

Master

Master

Master

Master

Page 15: Google을 지탱하는 기술] 제3장

Chubby- 분산 잠금 서비스• 특징 - 파일 시스템으로 이용

파일에 접근하기

파일명 /ls/<셀명 >wombat/pouch ->Lock service 의 약어

셀의 이름을 DNS 에 문의하면 모든

레플리카의 어드레스를 구할 수 있다

Local 셀과 global셀

Local 셀가까이 있는 셀에

접근하고 싶은 경우 이용

Global 셀전 세계로부터 접근이 가능한 Chubby 셀

파일의 읽기와 쓰기

읽기 , 쓰기마스터가 모든 데이터를

가지고 있으므로 , 마스터에 요구

ACL일기 , 쓰기 , 변경에

대해서 각각 그 동작을 허가할 사용자 목록 정의

Page 16: Google을 지탱하는 기술] 제3장

Chubby- 분산 잠금 서비스- 잠금 서비스의 이용

• 공유 잠금• 배타적 잠금

• GFS 도 Chubby와 조합해 간접적으로 잠금 가능

• Chubby 장애• Chubby셀의

마스터가 정지하면 다른 레플리카가 마스터로 전환

• Client 정지• 외부 리소스를

안전하게 잠금

파일의 잠금

외부 리소스의

잠금

페일오버시퀀서

Page 17: Google을 지탱하는 기술] 제3장

Chubby- 분산 잠금 서비스- 통지를 활용

감시 등록 작성 소멸 캐시 < 서버의 사활 감시 > < 어드레스의 취득 >

변경 갱신 파기

재취득 어드레스 확인 < 마스터의 치환 > < 어드레스의 갱신 >

마스터

Server

Server

마스터

Server

Server

마스터

마스터

마스터

이벤트 통지의 응용

캐시의 갱신

Page 18: Google을 지탱하는 기술] 제3장

Tip

silon

EMC

EMC Isilon

Global Name Space

지원 불가 지원

FS Size 16TB 최대 1,728TB

최대 성능 스토리지 가능한 최대

성능

최대 10GB

CPU 간섭 CPU 분리 구조

CPU 공유 사용 구조

Client S/W 있음 없음

파일 시스템 복구

전체 파일시스템

fsck

전체 파일시스템

fsck

Page 19: Google을 지탱하는 기술] 제3장

Tip

HDD SSD

VS

HDD SSD•저렴한 가격•SSD 에 비해 대용량•느린 속도

•반도체 사용으로 인한 읽기와 쓰기시간 단축으로 인한 작업 효율 상승•소비전력 , 소음 감소•비싼 가격