E D R , A S I H C RSS

Bigtable기능명세

Contents

1. 기능
2. 로드 밸런싱 ★★★★★
2.1. 기능명세
3. TS 복구 ★★★★★
3.1. 기능명세
3.2. ISSUE
4. 메타 테�블 갱신 ★★★★★
5. 마스터 SCAN ★★★★★
5.1. 기능명세
6. ���언트� 요청 ★★★★
6.1. 기능명세
6.1.1. read
6.1.2. write
7. 커밋로그� 쓰기 ★★★
7.1. 기능명세
7.1.1. 기�
7.1.2. �소
7.2. 비기능 명세
8. TS 등� ★★★
8.1. 기능명세
9. 마스터 등� ★★★
10. SSTABLE Compaction ★★★
10.1. Minor Compaction
10.2. Major Compaction
11. 태블릿 복구 ★★
11.1. 기능명세
12. 마스터 복구 ★★
12.1. 기능명세
13. 태블릿 Split ★★
13.1. 기능명세
14. ���언트 �러코드 ★★
14.1. 비기능명세
15. heartbeat ★
16. 만기 ★
16.1. 기능명세
16.2. 비기능명세
17. 태블릿 서버
18. 마스터 서버
19. ���언트
20. ���언트 API
21. Locker
22. DFS

  1. Bigtable
  2. Bigtable/DataModel
  3. Bigtable/MasterServer
  4. Bigtable/TabletServer
  5. Bigtable/분��설계
  6. Bigtable기능명세

  • 구글ì�˜ ë¶„ì‚° ë�°ì�´í„°ë² ì�´ìФ Bigtable ë¶„ì„�하고 설계하기
  • http://nforge.zeropage.org/projects/bigtablet
    • ì•„ 잘못만들었네

1. 기능

태블릿 할당 ★★★★★
로드밸런싱/태블릿 서버 복구
B+ 트리 갱신 ★★★★★
마스터 SCAN ★★★★★
���언트� 요청 ★★★★
read/write
커밋로그� 쓰기 ★★★
Tablet Server 등� ★★★
Master Server 등� ★★★
���언트 �러코드 ★★
SSTABLE Compaction ★★★
minor compaction
major compaction
태블릿 복구 ★★
마스터 복구 ★★
태블릿 Split ★★
heartbeat ★
만기 ★

2. 로드 밸런싱 ★★★★★

가장 load가 �� TS�게 가장 load가 많� TS� 태블릿� 할당.
TS와 TS간� 태블릿 할당
신규 TS� 태블릿 할당하기� 같�.

2.1. 기능명세

  1. 트리거
    1. 태블릿 개수, cpu rate, 메모리 사용량� 비율� 계산해서
    2. ISSUE : �균+�정 수치를 �용한 계산� 필요
      1. �균으로 트리거를 결정하지만 값� �정 수치보다 작다면 로드 밸런싱� �어나지 않는다.
  2. 마스터 역할
    1. 가장load가 � TS(source)와 가장load가 �� TS(target)와� 차�가 �정수준 ���때
    2. source �게 target� ip와 전달할 태블릿� 개수를 전달
  3. TS ì—­í• 
    1. 소스 TS
      1. 해당 태블릿� SSTABLE들� minor compaction
      2. source는 target�게 정해진 갯수만�� 태블릿� 리스트로 �름전달 ( 연�� 태블릿� 전달한다)
      3. �신� 태블릿 리스트�서 전달한 태블릿들� 삭제
      4. target�게서 제대로 전달받았는지 확�
    2. 타겟 TS
      1. 전달받� 태블릿 리스트로 태블릿들� �어온다
      2. 소스 TS�게 성공 메세지 보냄
    3. 소스 TS
      1. 마스터�게 성공 메세지 전달(마스터 업��트)
  4. 마스터 역할
    1. b+ 트리(메타태블릿) 갱신
  5. ISSUE
    1. �러스터� 로드가 �어서 하나� TS가 커버할 수 있는 정�� 로드 밸런싱� 필요한가?
    2. target� 제대로 전달받았는지 어떻게 알지?
      1. target� �접 마스터�게 �신� 태블릿 리스트를 전달하고 마스터가 target� �전 태블릿 리스트와 현재 태블릿 리스트를 비�해 밸런싱� 잘 �었는지 확�.
    3. � 나� 로드밸런싱 정책필요
      1. 로드밸런싱시 전송할 태블릿 개수 어떻게?

3. TS 복구 ★★★★★

TS가 다운�면 해당 TS가 가지고 있� 태블릿들� 다른 TS� 분산해 나누어준다.
마스터와 TS사�� 태블릿 할당

3.1. 기능명세

  • 마스터
    1. 마스터는 주기�으로 TS들�게서 heartbeat를 받는다
    2. 마스터는 주기�으로 TS들� 태블릿 리스트를 스캔한다.
      1. 스캔한 태블릿 리스트들과 메타태블릿(루트태블릿�었나?)과 비�해 누�� 태블릿 리스트가 있는지 검사
        1. 누�� 태블릿 리스트가 있다면 해당 태블릿 리스트를 가지고 있는 TS가 만기� 것임.(<- 만기가 �지 않았다면?)
        2. 해당 태블릿 리스트를 다른 TS들�게 할당해야함.
        3. target들� 정한다. (어떤 기준으로? 몇개나?)
        4. traget들�게 �접 태블릿 리스트를 전달한다.
  • TS
    1. �기 성공시 마스터�게 성공 메세지 전달 (마스터 업��트)
  • ISSUE
    1. 태블릿 분산시 어떤 정책� 쓸까?
      1. �균?
      2. 개수?

3.2. ISSUE

  • 메타ë�°ì�´í„° 태블릿 갱신 (B+ 트리 갱신)
    1. 갱신 : 마스터가
    2. 언제 : 마스터 업��트 후
    3. 마스터 업��트 : target� 태블릿 리스트를 전달받고 DFS�서 태블릿 �기� 성공하면 source�게 성공 메세지 전달.
    4. source는 target�게 성공 메세지를 받으면 �신� 태블릿 리스트�서 전달한 태블릿들� 삭제한다.
    5. source는 마스터�게 성공 메세지를 보내 마스터를 업��트한다.
    6. 마스터는 메타태블릿� 업��트한다.
  • 로드 밸런싱 중간ì—� targetì�´ 다운ë�œë‹¤ë©´ : 마스터는 로드밸런싱ì�„ 위해 다른 targetì�„ ì„ íƒ�. ì�´í›„ TS 복구를 한다.
  • 로드 밸런싱 중간ì—� sourceê°€ 다운ë�œë‹¤ë©´? : TS 복구
  • 소스TS는 전달할 태블릿ì�„ 어떻게 ì •í•  것ì�¸ê°€ : 태블릿 리스트ì—�서 앞ì—�서부터 ì—°ì†�ë�˜ëŠ” 태블릿 Nê°œ
  • DFSì—�서 태블릿 ì�½ê¸° 실패시 대처
    1. 무한 �기 시� -> DFS 부하 �가
    2. �기 실패한 태블릿 삭제요청 -> 정보 �실

4. 메타 테�블 갱신 ★★★★★

태블릿� 삽입(혹� split)� 있� 때마다 마스터(�는 TS 스스로)가 b+ 트리를 갱신한다.
client는 b+ 트리를 �용해 row key �색� 할 수 있다.

5. 마스터 SCAN ★★★★★

마스터� 스캔요청� 대한 �답. TS가 관리중� 모든 태블릿� 리스트를 마스터�게 전달한다.
  1. 마스터� 스캔요청
  2. TS가 �신� 관리하고 있는 태블릿� 리스트들� 전달한다.

5.1. 기능명세

6. ���언트� 요청 ★★★★

  • ìº�싱 í•„ìš”

6.1. 기능명세

6.1.1. read

  • í�´ë�¼ì�´ì–¸íЏ ì—­í• 
    1. B+트리�서 �하는 row를 가지고 있는 TS를 �색
  • TSì—­í• 
    1. ���언트� ROW� �기 요청� 들어온다 (ISSUE 6. ���언트는 어떤 형�으로 TS�게 ROW를 요청할 것�가)
    2. TS는 �신� 가진 태블릿들�서 요청받� ROW를 검색
    3. 검색결과들� merge한다.
    4. merge결과를 String� 리스트로 ���언트�게 �려준다

6.1.2. write

  • í�´ë�¼ì�´ì–¸íЏ ì—­í• 
    1. (태블릿� 같� ROW를 담고 있으므로 ���언트는 트리�색� 통해 TS를 할당받는다)
  • TS ì—­í• 
    1. ���언트�게 요청받� row는 먼저 커밋로그� 기� 후 memtable� 쓴다.

7. 커밋로그� 쓰기 ★★★

쓰기(write) 연산시�만 기��
�기 제한(2GB) 필요
�형 �료구조를 사용해 공간� 재활용필요 -> 한바퀴 �아서 공간� 없어지면 memtable들� minor compaction� 필요하다.
그러나 compaction시�는 모든 수정작업� 중지�므로 로그는 �절히 커야한다.

7.1. 기능명세

7.1.1. 기�

  1. memtable� 쓰기를 하기 전
  2. 커밋로그� sstable명과 쓰려는 값 기�

7.1.2. �소

  1. memtable� copaction으로 sstable� �면 해당 sstable� 로그는 삭제�어야 한다.
  2. 로그� 삭제� 쓰기연산
    1. 플래그를 �용해 삭제�� 명시

7.2. 비기능 명세

  1. 커밋로그는 DFS� 있다.
  2. TS당 한개.

8. TS 등� ★★★

신규 TS는 Locker� �신� 정보를 등�한다
Locker는 잠금파�� �용해 TS를 관리한다.

8.1. 기능명세

  1. Locker� �신� 정보를 등�한다
    1. �신� ip
    2. port
    3. 그 외� 시스템 전체가 공유해야 하는 정보는?
  2. Locker는 해당 ip와 port#로 파�� �성하며 해당 TS�게만 수정권한� 준다.

9. 마스터 등� ★★★

마스터 서버는 �러스터 내� 하나만 존재한다.
시작시 Locker� 등�� 하고 Locker는 �미 등�� 마스터가 있는지 검사 후 허가/거절 메세지 전달.
거절 메세지를 받� 마스터는 exit();

10. SSTABLE Compaction ★★★

마스터는 태블릿� SSTABLE 리스트� 알고있어야 하나?

10.1. Minor Compaction

memtable� ��� 쓰기 연산� 수행할 수 없� 때 SSTABLE로 변환. 파�형태로 DFS� 쓴다.
  1. 트리거
    1. memtable�게 할당� 메모리를 다 사용해서 � �� 쓰기를 할 수 없� 때
    2. 커밋로그�게 할당� 용량� 다 사용해서 � �� 쓰기를 할 수 없� 때

10.2. Major Compaction

SSTABLE들� 합병하여 최근 기�만� 남긴다.
client� �기 요청 �답시� 효율� 좋�
  • ISSUE
    1. SSTABLE 합병 시기?
    2. major compaction� 하면 SSTABLE� 항� 1개가�나?

11. 태블릿 복구 ★★

커밋로그�서 로그를 �어와 memtable 복구하는 것

11.1. 기능명세

  1. map&reduce 연산으로 TS별 정렬� 필요하다.
  2. 정렬� 로그�서 특정 TS� 로그를 재실행(redo)한다.

12. 마스터 복구 ★★

마스터 서버 다운시 복구

12.1. 기능명세

  1. 마스터가 다운�었�� �지하는 즉시 ?는 새로운 마스터를 결정한다.
    1. ISSUE
      1. 마스터� 다운� 어떻게 �지하지?
      2. 누가 새로운 마스터를 결정하지?
  2. 새로운 마스터� 시작� 알린다
    1. ISSUE : 누가 마스터를 알리지?
      1. 마스터가? TS가?
  3. 마스터는 Locker�서 TS리스트를 �어온다.
  4. 마스터는 Locker�서 루트태블릿� 정보를 �어온다.
  5. 마스터는 TS들�게서 태블릿 리스트를 스캔한다.

13. 태블릿 Split ★★

태블릿� �기가 �정 수준 �� 커지면 �개로 나눈다.

13.1. 기능명세

  1. 태블릿� �기가 200MB를 넘으면 major compaction
    1. 태블릿 split시 키는 반드시 sort�어 있어야 한다.
  2. 후 split한다
  3. SSTABLE� 논리�으로 분할�다
    1. 여러 태블릿� 하나� SSTABLE� 참조할 수 있다.
    2. ISSUE
      1. 하나� sstable� 여러 태블릿� 공유할 수 있게 한다.
      2. merge compaction등으로 �개� sstable만들면 sstable� 복수참조를 막� 수 있다.

14. ���언트 �러코드 ★★

���언트� 요청� 제대로 수행�지 않았� 때 TS�게 받� �답메세지별로 다른 시�를 할 수 있다.

14.1. 비기능명세

  1. TS 시작시� 등�한다. 등�� 성공하지 못하면 다시 시�한다.
  2. 재시�할 때 마다 시간간격 늘림
  3. �정횟수 ��시 멈춤(Locker� 부하 고려)

15. heartbeat ★

TS가 마스터(�는 Locker)� �정 간격마다 지��으로 전송하는 �미 패킷.
TS가 활성화중임� 알린다.

  • ISSUE
    1. heartbeat� �답� 해야하나?
      1. 장 : 마스터 실패를 TS가 �지할 수 있다.
      2. 단 : 마스터� 부하 �가

16. 만기 ★

유닛들� 스스로를 파기하지 않는다.
서버� 장애가 �겨 기능� 하지 못하게 �었� 때 만기(expired) �었다고 한다.

16.1. 기능명세

  1. TS 복구
  2. 마스터 복구
  3. Locker와 DFS� 복구는 논외로 한다.

16.2. 비기능명세

  1. 만기/실패시 복구

17. 태블릿 서버

태블릿� 관리하는 서버

  1. �성
    1. 태블릿
    2. 커밋로그
  2. 기능
    1. �신� 정보 등� (Locker)
    2. 태블릿 스캔 (마스터)
    3. heartbeat 보내기 (마스터)
    4. 태블릿 분할 (태블릿)
    5. 태블릿 합병 (태블릿)
    6. 태블릿�서 ��터 �기 (���언트)
    7. 태블릿� ��터 쓰기 (���언트)
    8. 태블릿 리스트 전달하기(태블릿 서버)
    9. 태블릿 리스트 받기 (태블릿 서버)
    10. 커밋로그� 쓰기 (DFS)

18. 마스터 서버

�러스터 관리 서버
  1. �성
    1. 태블릿 서버 정보/timeout 리스트
    2. 태블릿 ID 리스트
  2. 기능
    1. �신� 정보(ip, port) 등� (Locker)
    2. 태블릿 서버 신규(�는 실패) �지 (Locker)
    3. 태블릿 스캔 (태블릿 서버)
    4. hearbeat 체�, 타임아웃 초기화 (태블릿 서버)
    5. 로드밸런싱 (태블릿 서버)

19. ���언트

��터 �기/쓰기� 주체
Locker나 태블릿 서버 접근� ���언트 API로 한다.

  1. �성
    1. root tablet 주소 �싱
    2. meta tablet 블럭 �싱
  2. 기능
    1. root tablet 주소 요청 (Locker)
      1. ���언트 api 사용
    2. ��터 �기 요청 (태블릿 서버)
      1. ���언트 api 사용
    3. ��터 쓰기 요청 (태블릿 서버)
      1. ���언트 api 사용

20. ���언트 API

태블릿 서버용 api
���언트는 빅테�블� 내부 구조를 알지 못해야 한다.
  1. 기능
    1. root table 주소 얻기 (Locker)
    2. ��터 �기요청 태블릿 서버)
      1. 최초 접근시�만 b+ 트리 �색
      2. �기시 row key �는 key로 검색가능
    3. ��터 쓰기 요청 (태블릿 서버)
      1. 최초 접근시�만 b+ 트리 �색
      2. 쓰기시 key:value로만 쓰기 가능

21. Locker

태블릿 서버/마스터 정보 관리
��터 저장보다는 빠른 �답과 안정성� 요구함.
  1. �성
    1. 마스터 서버 주소 파�저장
    2. 태블릿 서버 주소 파�저장
    3. 루트 태블릿 주소 파�저장
  2. 기능
    1. 태블릿 서버 정보(ip, port)를 받아 파�로 저장
    2. 마스터 지정
      1. 마스터 서버 정보(ip, port)를 받아 파�로 저장
      2. 주소 요청� �답
    3. 루트 태블릿 주소 가�
      1. 마스터 서버�게 받는다

22. DFS

key와 value가 실제 저장�는 분산 파� 시스템
  1. �성
  2. 기능
    1. 태블릿 서버�게 받� SSTableID를 DFSFileName으로 변환한다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:36
Processing time 0.0146 sec