Contents
- 1. 기능
- 2. 로드 밸런싱 ★★★★★
- 3. TS 복구 ★★★★★
- 4. 메타 í…Œì�´ë¸” ê°±ì‹ â˜…â˜…â˜…â˜…â˜…
- 5. 마스터 SCAN ★★★★★
- 6. í�´ë�¼ì�´ì–¸íЏì�˜ ìš”ì² â˜…â˜…â˜…â˜…
- 7. 커밋로그� 쓰기 ★★★
- 8. TS 등� ★★★
- 9. 마스터 등� ★★★
- 10. SSTABLE Compaction ★★★
- 11. 태블릿 복구 ★★
- 12. 마스터 복구 ★★
- 13. 태블릿 Split ★★
- 14. ���언트 �러코드 ★★
- 15. heartbeat ★
- 16. 만기 ★
- 17. 태블릿 서버
- 18. 마스터 서버
- 19. ���언트
- 20. ���언트 API
- 21. Locker
- 22. DFS
- Bigtable
- Bigtable/DataModel
- Bigtable/MasterServer
- Bigtable/TabletServer
- Bigtable/분��설계
- Bigtable기능명세
- 구글ì�˜ ë¶„ì‚° ë�°ì�´í„°ë² ì�´ìФ Bigtable ë¶„ì„�í•˜ê³ ì„¤ê³„í•˜ê¸°
- http://nforge.zeropage.org/projects/bigtablet
- 아 잘못만들었네
- 아 잘못만들었네
1. 기능 ¶
태블릿 í• ë‹¹ ★★★★★
마스터 SCAN ★★★★★
í�´ë�¼ì�´ì–¸íЏì�˜ ìš”ì² â˜…â˜…â˜…â˜…
Tablet Server 등� ★★★
Master Server 등� ★★★
���언트 �러코드 ★★
SSTABLE Compaction ★★★
마스터 복구 ★★
태블릿 Split ★★
heartbeat ★
만기 ★
로드밸런싱/태블릿 서버 복구
B+ 트리 ê°±ì‹ â˜…â˜…â˜…â˜…â˜…ë§ˆìŠ¤í„° SCAN ★★★★★
í�´ë�¼ì�´ì–¸íЏì�˜ ìš”ì² â˜…â˜…â˜…â˜…
read/write
커밋로그� 쓰기 ★★★Tablet Server 등� ★★★
Master Server 등� ★★★
���언트 �러코드 ★★
SSTABLE Compaction ★★★
minor compaction
major compaction
태블릿 복구 ★★major compaction
마스터 복구 ★★
태블릿 Split ★★
heartbeat ★
만기 ★
2. 로드 밸런싱 ★★★★★ ¶
가장 loadê°€ ì �ì�€ TSì—�게 가장 loadê°€ ë§Žì�€ TSì�˜ 태블릿ì�„ í• ë‹¹.
TS와 TSê°„ì�˜ 태블릿 í• ë‹¹
ì‹ ê·œ TSì—� 태블릿 í• ë‹¹í•˜ê¸°ë�„ ê°™ì�Œ.
TS와 TSê°„ì�˜ 태블릿 í• ë‹¹
ì‹ ê·œ TSì—� 태블릿 í• ë‹¹í•˜ê¸°ë�„ ê°™ì�Œ.
2.1. 기능명세 ¶
- 트리거
- 태블릿 개수, cpu rate, 메모리 사용량� 비율� 계산해서
- ISSUE : í�‰ê· +ì�¼ì • 수치를 ì�´ìš©í•œ 계산ì‹� í•„ìš”
- í�‰ê· 으로 트리거를 ê²°ì •í•˜ì§€ë§Œ ê°’ì�´ ì�¼ì • 수치보다 작다면 로드 밸런싱ì�€ ì�¼ì–´ë‚˜ì§€ 않는다.
- í�‰ê· 으로 트리거를 ê²°ì •í•˜ì§€ë§Œ ê°’ì�´ ì�¼ì • 수치보다 작다면 로드 밸런싱ì�€ ì�¼ì–´ë‚˜ì§€ 않는다.
- 태블릿 개수, cpu rate, 메모리 사용량� 비율� 계산해서
- 마스터 ì—í•
- 가장loadê°€ í�° TS(source)와 가장loadê°€ ì �ì�€ TS(target)와ì�˜ ì°¨ì�´ê°€ ì�¼ì •수준 ì�´ìƒ�ì�¼ë•Œ
- source ì—�게 targetì�˜ ip와 ì „ë‹¬í• íƒœë¸”ë¦¿ì�˜ 개수를 ì „ë‹¬
- 가장loadê°€ í�° TS(source)와 가장loadê°€ ì �ì�€ TS(target)와ì�˜ ì°¨ì�´ê°€ ì�¼ì •수준 ì�´ìƒ�ì�¼ë•Œ
- TS ì—í•
- 소스 TS
- 해당 태블릿� SSTABLE들� minor compaction
- source는 targetì—�게 ì •í•´ì§„ 갯수만í�¼ì�˜ 태블릿ì�„ 리스트로 ì�´ë¦„ì „ë‹¬ ( ì—°ì†�ë�œ 태블릿ì�„ ì „ë‹¬í•œë‹¤)
- ìž�ì‹ ì�˜ 태블릿 리스트ì—�서 ì „ë‹¬í•œ 태블릿들ì�„ ì‚ì œ
- targetì—�게서 ì œëŒ€ë¡œ ì „ë‹¬ë°›ì•˜ëŠ”ì§€ 확ì�¸
- 해당 태블릿� SSTABLE들� minor compaction
- 타겟 TS
- ì „ë‹¬ë°›ì�€ 태블릿 리스트로 태블릿들ì�„ ì�½ì–´ì˜¨ë‹¤
- 소스 TS�게 성공 메세지 보냄
- ì „ë‹¬ë°›ì�€ 태블릿 리스트로 태블릿들ì�„ ì�½ì–´ì˜¨ë‹¤
- 소스 TS
- 마스터ì—�게 성공 메세지 ì „ë‹¬(마스터 ì—…ë�°ì�´íЏ)
- 마스터ì—�게 성공 메세지 ì „ë‹¬(마스터 ì—…ë�°ì�´íЏ)
- 소스 TS
- 마스터 ì—í•
- b+ 트리(메타태블릿) ê°±ì‹
- b+ 트리(메타태블릿) ê°±ì‹
- ISSUE
- í�´ëŸ¬ìŠ¤í„°ì�˜ 로드가 ì �어서 하나ì�˜ TSê°€ ì»¤ë²„í• ìˆ˜ 있는 ì •ë�„ë�„ 로드 밸런싱ì�´ 필요한가?
- targetì�´ ì œëŒ€ë¡œ ì „ë‹¬ë°›ì•˜ëŠ”ì§€ 어떻게 알지?
- targetì�´ ì§�ì ‘ 마스터ì—�게 ìž�ì‹ ì�˜ 태블릿 리스트를 ì „ë‹¬í•˜ê³ ë§ˆìŠ¤í„°ê°€ targetì�˜ ì�´ì „ 태블릿 리스트와 현재 태블릿 리스트를 비êµ�í•´ 밸런싱ì�´ 잘 ë�˜ì—ˆëŠ”ì§€ 확ì�¸.
- targetì�´ ì§�ì ‘ 마스터ì—�게 ìž�ì‹ ì�˜ 태블릿 리스트를 ì „ë‹¬í•˜ê³ ë§ˆìŠ¤í„°ê°€ targetì�˜ ì�´ì „ 태블릿 리스트와 현재 태블릿 리스트를 비êµ�í•´ 밸런싱ì�´ 잘 ë�˜ì—ˆëŠ”ì§€ 확ì�¸.
- ë�” 나ì�€ 로드밸런싱 ì •ì±…í•„ìš”
- 로드밸런싱시 ì „ì†¡í• íƒœë¸”ë¦¿ 개수 어떻게?
- 로드밸런싱시 ì „ì†¡í• íƒœë¸”ë¦¿ 개수 어떻게?
- í�´ëŸ¬ìŠ¤í„°ì�˜ 로드가 ì �어서 하나ì�˜ TSê°€ ì»¤ë²„í• ìˆ˜ 있는 ì •ë�„ë�„ 로드 밸런싱ì�´ 필요한가?
3. TS 복구 ★★★★★ ¶
TSê°€ 다운ë�˜ë©´ 해당 TSê°€ ê°€ì§€ê³ ìžˆë�˜ 태블릿들ì�„ 다른 TSì—� ë¶„ì‚°í•´ 나누어준다.
마스터와 TS사ì�´ì�˜ 태블릿 í• ë‹¹
마스터와 TS사ì�´ì�˜ 태블릿 í• ë‹¹
3.1. 기능명세 ¶
- 마스터
- 마스터는 주기ì �으로 TS들ì—�게서 heartbeat를 받는다
- 마스터는 주기ì �으로 TS들ì�˜ 태블릿 리스트를 스캔한다.
- 스캔한 태블릿 리스트들과 메타태블릿(루트태블릿�었나?)과 비�해 누�� 태블릿 리스트가 있는지 검사
- 누ë�½ë�œ 태블릿 리스트가 있다면 해당 태블릿 리스트를 ê°€ì§€ê³ ìžˆëŠ” TSê°€ 만기ë�œ 것임.(<- 만기가 ë�˜ì§€ 않았다면?)
- 해당 태블릿 리스트를 다른 TS들ì—�게 í• ë‹¹í•´ì•¼í•¨.
- target들ì�„ ì •í•œë‹¤. (ì–´ë–¤ 기준으로? 몇개나?)
- traget들ì—�게 ì§�ì ‘ 태블릿 리스트를 ì „ë‹¬í•œë‹¤.
- 누ë�½ë�œ 태블릿 리스트가 있다면 해당 태블릿 리스트를 ê°€ì§€ê³ ìžˆëŠ” TSê°€ 만기ë�œ 것임.(<- 만기가 ë�˜ì§€ 않았다면?)
- 스캔한 태블릿 리스트들과 메타태블릿(루트태블릿�었나?)과 비�해 누�� 태블릿 리스트가 있는지 검사
- 마스터는 주기ì �으로 TS들ì—�게서 heartbeat를 받는다
- TS
- ì�½ê¸° 성공시 마스터ì—�게 성공 메세지 ì „ë‹¬ (마스터 ì—…ë�°ì�´íЏ)
- ì�½ê¸° 성공시 마스터ì—�게 성공 메세지 ì „ë‹¬ (마스터 ì—…ë�°ì�´íЏ)
- ISSUE
- 태블릿 분산시 ì–´ë–¤ ì •ì±…ì�„ 쓸까?
- í�‰ê· ?
- 개수?
- í�‰ê· ?
- 태블릿 분산시 ì–´ë–¤ ì •ì±…ì�„ 쓸까?
3.2. ISSUE ¶
- 메타ë�°ì�´í„° 태블릿 ê°±ì‹ (B+ 트리 ê°±ì‹ )
- ê°±ì‹ : 마스터가
- ì–¸ì œ : 마스터 ì—…ë�°ì�´íЏ 후
- 마스터 ì—…ë�°ì�´íЏ : targetì�´ 태블릿 리스트를 ì „ë‹¬ë°›ê³ DFSì—�서 태블릿 ì�½ê¸°ì—� 성공하면 sourceì—�게 성공 메세지 ì „ë‹¬.
- source는 targetì—�게 성공 메세지를 받으면 ìž�ì‹ ì�˜ 태블릿 리스트ì—�서 ì „ë‹¬í•œ 태블릿들ì�„ ì‚ì œí•œë‹¤.
- source는 마스터�게 성공 메세지를 보내 마스터를 업��트한다.
- 마스터는 메타태블릿� 업��트한다.
- ê°±ì‹ : 마스터가
- 로드 밸런싱 중간ì—� targetì�´ 다운ë�œë‹¤ë©´ : 마스터는 로드밸런싱ì�„ 위해 다른 targetì�„ ì„ íƒ�. ì�´í›„ TS 복구를 한다.
- 로드 밸런싱 중간� source가 다운�다면? : TS 복구
- 소스TS는 ì „ë‹¬í• íƒœë¸”ë¦¿ì�„ 어떻게 ì •í• ê²ƒì�¸ê°€ : 태블릿 리스트ì—�서 앞ì—�서부터 ì—°ì†�ë�˜ëŠ” 태블릿 Nê°œ
- DFS�서 태블릿 �기 실패시 대처
- 무한 �기 시� -> DFS 부하 �가
- ì�½ê¸° 실패한 태블릿 ì‚ì œìš”ì² -> ì •ë³´ ì†�실
- 무한 �기 시� -> DFS 부하 �가
4. 메타 í…Œì�´ë¸” ê°±ì‹ â˜…â˜…â˜…â˜…â˜… ¶
태블릿ì�˜ 삽입(혹ì�€ split)ì�´ 있ì�„ 때마다 마스터(ë˜�는 TS 스스로)ê°€ b+ 트리를 ê°±ì‹ í•œë‹¤.
client는 b+ 트리를 ì�´ìš©í•´ row key íƒ�색ì�„ í• ìˆ˜ 있다.
client는 b+ 트리를 ì�´ìš©í•´ row key íƒ�색ì�„ í• ìˆ˜ 있다.
5. 마스터 SCAN ★★★★★ ¶
마스터ì�˜ 스캔요ì²ì—� 대한 ì�‘답. TSê°€ 관리중ì�¸ ëª¨ë“ íƒœë¸”ë¦¿ì�˜ 리스트를 마스터ì—�게 ì „ë‹¬í•œë‹¤.
- 마스터ì�˜ 스캔요ì²
- TSê°€ ìž�ì‹ ì�´ ê´€ë¦¬í•˜ê³ ìžˆëŠ” 태블릿ì�˜ 리스트들ì�„ ì „ë‹¬í•œë‹¤.
6.1.1. read ¶
- í�´ë�¼ì�´ì–¸íЏ ì—í•
- B+트리ì—�서 ì›�하는 row를 ê°€ì§€ê³ ìžˆëŠ” TS를 íƒ�색
- B+트리ì—�서 ì›�하는 row를 ê°€ì§€ê³ ìžˆëŠ” TS를 íƒ�색
- TSì—í•
- í�´ë�¼ì�´ì–¸íЏì�˜ ROWì�˜ ì�½ê¸° ìš”ì²ì�´ 들어온다 (ISSUE 6. í�´ë�¼ì�´ì–¸íŠ¸ëŠ” ì–´ë–¤ 형ì‹�으로 TSì—�게 ROW를 ìš”ì²í• 것ì�¸ê°€)
- TS는 ìž�ì‹ ì�´ 가진 태블릿들ì—�서 ìš”ì²ë°›ì�€ ROW를 검색
- 검색결과들� merge한다.
- merge결과를 Stringì�˜ 리스트로 í�´ë�¼ì�´ì–¸íЏì—�게 ë�Œë ¤ì¤€ë‹¤
- í�´ë�¼ì�´ì–¸íЏì�˜ ROWì�˜ ì�½ê¸° ìš”ì²ì�´ 들어온다 (ISSUE 6. í�´ë�¼ì�´ì–¸íŠ¸ëŠ” ì–´ë–¤ 형ì‹�으로 TSì—�게 ROW를 ìš”ì²í• 것ì�¸ê°€)
6.1.2. write ¶
- í�´ë�¼ì�´ì–¸íЏ ì—í•
- (태블릿ì�€ ê°™ì�€ ROW를 ë‹´ê³ ìžˆìœ¼ë¯€ë¡œ í�´ë�¼ì�´ì–¸íŠ¸ëŠ” 트리íƒ�색ì�„ 통해 TS를 í• ë‹¹ë°›ëŠ”ë‹¤)
- (태블릿ì�€ ê°™ì�€ ROW를 ë‹´ê³ ìžˆìœ¼ë¯€ë¡œ í�´ë�¼ì�´ì–¸íŠ¸ëŠ” 트리íƒ�색ì�„ 통해 TS를 í• ë‹¹ë°›ëŠ”ë‹¤)
- TS ì—í•
- í�´ë�¼ì�´ì–¸íЏì—�게 ìš”ì²ë°›ì�€ row는 ë¨¼ì € 커밋로그ì—� 기ë¡� 후 memtableì—� 쓴다.
- í�´ë�¼ì�´ì–¸íЏì—�게 ìš”ì²ë°›ì�€ row는 ë¨¼ì € 커밋로그ì—� 기ë¡� 후 memtableì—� 쓴다.
7. 커밋로그ì—� 쓰기 ★★★ ¶
쓰기(write) 연산시�만 기��
í�¬ê¸° ì œí•œ(2GB) í•„ìš”
�형 �료구조를 사용해 공간� 재활용필요 -> 한바퀴 �아서 공간� 없어지면 memtable들� minor compaction� 필요하다.
그러나 compaction시ì—�는 ëª¨ë“ ìˆ˜ì •ìž‘ì—…ì�´ 중지ë�˜ë¯€ë¡œ 로그는 ì �ì ˆížˆ 커야한다.
í�¬ê¸° ì œí•œ(2GB) í•„ìš”
�형 �료구조를 사용해 공간� 재활용필요 -> 한바퀴 �아서 공간� 없어지면 memtable들� minor compaction� 필요하다.
그러나 compaction시ì—�는 ëª¨ë“ ìˆ˜ì •ìž‘ì—…ì�´ 중지ë�˜ë¯€ë¡œ 로그는 ì �ì ˆížˆ 커야한다.
7.1.2. ë§�소 ¶
- memtableì�´ copaction으로 sstableì�´ ë�˜ë©´ 해당 sstableì�˜ 로그는 ì‚ì œë�˜ì–´ì•¼ 한다.
- 로그ì�˜ ì‚ì œë�„ 쓰기연산
- 플래그를 ì�´ìš©í•´ ì‚ì œë�¨ì�„ 명시
- 플래그를 ì�´ìš©í•´ ì‚ì œë�¨ì�„ 명시
8. TS 등ë¡� ★★★ ¶
ì‹ ê·œ TS는 Lockerì—� ìž�ì‹ ì�˜ ì •ë³´ë¥¼ 등ë¡�한다
Locker는 ìž ê¸ˆíŒŒì�¼ì�„ ì�´ìš©í•´ TS를 관리한다.
Locker는 ìž ê¸ˆíŒŒì�¼ì�„ ì�´ìš©í•´ TS를 관리한다.
8.1. 기능명세 ¶
- Lockerì—� ìž�ì‹ ì�˜ ì •ë³´ë¥¼ 등ë¡�한다
- ìž�ì‹ ì�˜ ip
- port
- ê·¸ 외ì�˜ 시스템 ì „ì²´ê°€ ê³µìœ í•´ì•¼ 하는 ì •ë³´ëŠ”?
- ìž�ì‹ ì�˜ ip
- Locker는 해당 ip와 port#로 파ì�¼ì�„ ìƒ�성하며 해당 TSì—�게만 ìˆ˜ì •ê¶Œí•œì�„ 준다.
9. 마스터 등ë¡� ★★★ ¶
마스터 서버는 �러스터 내� 하나만 존재한다.
시작시 Lockerì—� 등ë¡�ì�„ í•˜ê³ Locker는 ì�´ë¯¸ 등ë¡�ë�œ 마스터가 있는지 검사 후 허가/ê±°ì ˆ 메세지 ì „ë‹¬.
ê±°ì ˆ 메세지를 ë°›ì�€ 마스터는 exit();
시작시 Lockerì—� 등ë¡�ì�„ í•˜ê³ Locker는 ì�´ë¯¸ 등ë¡�ë�œ 마스터가 있는지 검사 후 허가/ê±°ì ˆ 메세지 ì „ë‹¬.
ê±°ì ˆ 메세지를 ë°›ì�€ 마스터는 exit();
10. SSTABLE Compaction ★★★ ¶
마스터는 태블릿ì�˜ SSTABLE 리스트ë�„ ì•Œê³ ìžˆì–´ì•¼ 하나?
10.1. Minor Compaction ¶
memtableì—� ë�”ì�´ìƒ� 쓰기 ì—°ì‚°ì�„ ìˆ˜í–‰í• ìˆ˜ ì—†ì�„ 때 SSTABLE로 변환. 파ì�¼í˜•태로 DFSì—� 쓴다.
- 트리거
- memtableì—�게 í• ë‹¹ë�œ 메모리를 다 사용해서 ë�” ì�´ìƒ� 쓰기를 í• ìˆ˜ ì—†ì�„ 때
- 커밋로그ì—�게 í• ë‹¹ë�œ 용량ì�„ 다 사용해서 ë�” ì�´ìƒ� 쓰기를 í• ìˆ˜ ì—†ì�„ 때
- memtableì—�게 í• ë‹¹ë�œ 메모리를 다 사용해서 ë�” ì�´ìƒ� 쓰기를 í• ìˆ˜ ì—†ì�„ 때
10.2. Major Compaction ¶
SSTABLE들� 합병하여 최근 기�만� 남긴다.
clientì�˜ ì�½ê¸° ìš”ì² ì�‘답시ì—� 효율ì�´ 좋ì�Œ
clientì�˜ ì�½ê¸° ìš”ì² ì�‘답시ì—� 효율ì�´ 좋ì�Œ
- ISSUE
- SSTABLE 합병 시기?
- major compactionì�„ 하면 SSTABLEì�´ í•ìƒ� 1개가ë�˜ë‚˜?
- SSTABLE 합병 시기?
11.1. 기능명세 ¶
- map&reduce 연산으로 TS별 ì •ë ¬ì�´ 필요하다.
- ì •ë ¬ë�œ 로그ì—�서 íŠ¹ì • TSì�˜ 로그를 재실행(redo)한다.
12.1. 기능명세 ¶
- 마스터가 다운ë�˜ì—ˆì�Œì�„ ê°�지하는 즉시 ?는 새로운 마스터를 ê²°ì •í•œë‹¤.
- ISSUE
- 마스터� 다운� 어떻게 �지하지?
- 누가 새로운 마스터를 ê²°ì •í•˜ì§€?
- 마스터� 다운� 어떻게 �지하지?
- ISSUE
- 새로운 마스터� 시작� 알린다
- ISSUE : 누가 마스터를 알리지?
- 마스터가? TS가?
- 마스터가? TS가?
- ISSUE : 누가 마스터를 알리지?
- 마스터는 Locker�서 TS리스트를 �어온다.
- 마스터는 Lockerì—�서 루트태블릿ì�˜ ì •ë³´ë¥¼ ì�½ì–´ì˜¨ë‹¤.
- 마스터는 TS들�게서 태블릿 리스트를 스캔한다.
13. 태블릿 Split ★★ ¶
태블릿ì�˜ í�¬ê¸°ê°€ ì�¼ì • 수준 ì�´ìƒ� 커지면 ë‘�개로 나눈다.
13.1. 기능명세 ¶
- 태블릿� �기가 200MB를 넘으면 major compaction
- 태블릿 split시 키는 반드시 sort�어 있어야 한다.
- 태블릿 split시 키는 반드시 sort�어 있어야 한다.
- 후 split한다
- SSTABLEì�€ 논리ì �으로 ë¶„í• ë�œë‹¤
- 여러 태블릿ì�´ 하나ì�˜ SSTABLEì�„ ì°¸ì¡°í• ìˆ˜ 있다.
- ISSUE
- 하나ì�˜ sstableì�„ 여러 태블릿ì�´ ê³µìœ í• ìˆ˜ 있게 한다.
- merge compaction등으로 �개� sstable만들면 sstable� 복수참조를 막� 수 있다.
- 하나ì�˜ sstableì�„ 여러 태블릿ì�´ ê³µìœ í• ìˆ˜ 있게 한다.
- 여러 태블릿ì�´ 하나ì�˜ SSTABLEì�„ ì°¸ì¡°í• ìˆ˜ 있다.
14. í�´ë�¼ì�´ì–¸íЏ ì—�러코드 ★★ ¶
í�´ë�¼ì�´ì–¸íЏì�˜ ìš”ì²ì�´ ì œëŒ€ë¡œ 수행ë�˜ì§€ 않았ì�„ 때 TSì—�게 ë°›ì�€ ì�‘답메세지별로 다른 시ë�„를 í• ìˆ˜ 있다.
14.1. 비기능명세 ¶
- TS 시작시� 등�한다. 등�� 성공하지 못하면 다시 시�한다.
- 재시ë�„í• ë•Œ 마다 시간간격 늘림
- ì�¼ì •횟수 ì�´ìƒ�시 멈춤(Lockerì�˜ 부하 ê³ ë ¤)
15. heartbeat ★ ¶
TSê°€ 마스터(ë˜�는 Locker)ì—� ì�¼ì • 간격마다 ì§€ì†�ì �으로 ì „ì†¡í•˜ëŠ” ë�”미 패킷.
TS가 활성화중임� 알린다.
TS가 활성화중임� 알린다.
- ISSUE
- heartbeat� �답� 해야하나?
- 장 : 마스터 실패를 TSê°€ ê°�ì§€í• ìˆ˜ 있다.
- 단 : 마스터� 부하 �가
- 장 : 마스터 실패를 TSê°€ ê°�ì§€í• ìˆ˜ 있다.
- heartbeat� �답� 해야하나?
16. 만기 ★ ¶
ìœ ë‹›ë“¤ì�€ 스스로를 파기하지 않는다.
서버ì—� ìž¥ì• ê°€ ìƒ�겨 기능ì�„ 하지 못하게 ë�˜ì—ˆì�„ 때 만기(expired) ë�˜ì—ˆë‹¤ê³ 한다.
서버ì—� ìž¥ì• ê°€ ìƒ�겨 기능ì�„ 하지 못하게 ë�˜ì—ˆì�„ 때 만기(expired) ë�˜ì—ˆë‹¤ê³ 한다.
17. 태블릿 서버 ¶
태블릿� 관리하는 서버
- �성
- 태블릿
- 커밋로그
- 태블릿
- 기능
- ìž�ì‹ ì�˜ ì •ë³´ 등ë¡� (Locker)
- 태블릿 스캔 (마스터)
- heartbeat 보내기 (마스터)
- 태블릿 ë¶„í• (태블릿)
- 태블릿 합병 (태블릿)
- 태블릿�서 ��터 �기 (���언트)
- 태블릿� ��터 쓰기 (���언트)
- 태블릿 리스트 ì „ë‹¬í•˜ê¸°(태블릿 서버)
- 태블릿 리스트 받기 (태블릿 서버)
- 커밋로그� 쓰기 (DFS)
- ìž�ì‹ ì�˜ ì •ë³´ 등ë¡� (Locker)
18. 마스터 서버 ¶
�러스터 관리 서버
- �성
- 태블릿 서버 ì •ë³´/timeout 리스트
- 태블릿 ID 리스트
- 태블릿 서버 ì •ë³´/timeout 리스트
- 기능
- ìž�ì‹ ì�˜ ì •ë³´(ip, port) 등ë¡� (Locker)
- 태블릿 서버 ì‹ ê·œ(ë˜�는 실패) ê°�ì§€ (Locker)
- 태블릿 스캔 (태블릿 서버)
- hearbeat 체�, 타임아웃 초기화 (태블릿 서버)
- 로드밸런싱 (태블릿 서버)
- ìž�ì‹ ì�˜ ì •ë³´(ip, port) 등ë¡� (Locker)
19. í�´ë�¼ì�´ì–¸íЏ ¶
��터 �기/쓰기� 주체
Locker나 태블릿 서버 ì ‘ê·¼ì�€ í�´ë�¼ì�´ì–¸íЏ API로 한다.
Locker나 태블릿 서버 ì ‘ê·¼ì�€ í�´ë�¼ì�´ì–¸íЏ API로 한다.
- �성
- root tablet 주소 �싱
- meta tablet ë¸”ëŸ ìº�싱
- root tablet 주소 �싱
- 기능
- root tablet 주소 ìš”ì² (Locker)
- ���언트 api 사용
- ���언트 api 사용
- ë�°ì�´í„° ì�½ê¸° ìš”ì² (태블릿 서버)
- ���언트 api 사용
- ���언트 api 사용
- ë�°ì�´í„° 쓰기 ìš”ì² (태블릿 서버)
- ���언트 api 사용
- ���언트 api 사용
- root tablet 주소 ìš”ì² (Locker)
20. í�´ë�¼ì�´ì–¸íЏ API ¶
태블릿 서버용 api
���언트는 빅테�블� 내부 구조를 알지 못해야 한다.
���언트는 빅테�블� 내부 구조를 알지 못해야 한다.
- 기능
- root table 주소 얻기 (Locker)
- ë�°ì�´í„° ì�½ê¸°ìš”ì² íƒœë¸”ë¦¿ 서버)
- 최초 ì ‘ê·¼ì‹œì—�ë§Œ b+ 트리 íƒ�색
- �기시 row key �는 key로 검색가능
- 최초 ì ‘ê·¼ì‹œì—�ë§Œ b+ 트리 íƒ�색
- ë�°ì�´í„° 쓰기 ìš”ì² (태블릿 서버)
- 최초 ì ‘ê·¼ì‹œì—�ë§Œ b+ 트리 íƒ�색
- 쓰기시 key:value로만 쓰기 가능
- 최초 ì ‘ê·¼ì‹œì—�ë§Œ b+ 트리 íƒ�색
- root table 주소 얻기 (Locker)
21. Locker ¶
태블릿 서버/마스터 ì •ë³´ 관리
ë�°ì�´í„° ì €ìž¥ë³´ë‹¤ëŠ” ë¹ ë¥¸ ì�‘답과 ì•ˆì •ì„±ì�„ 요구함.
ë�°ì�´í„° ì €ìž¥ë³´ë‹¤ëŠ” ë¹ ë¥¸ ì�‘답과 ì•ˆì •ì„±ì�„ 요구함.
- �성
- 마스터 서버 주소 파ì�¼ì €ìž¥
- 태블릿 서버 주소 파ì�¼ì €ìž¥
- 루트 태블릿 주소 파ì�¼ì €ìž¥
- 마스터 서버 주소 파ì�¼ì €ìž¥
- 기능
- 태블릿 서버 ì •ë³´(ip, port)를 받아 파ì�¼ë¡œ ì €ìž¥
- 마스터 ì§€ì •
- 마스터 서버 ì •ë³´(ip, port)를 받아 파ì�¼ë¡œ ì €ìž¥
- 주소 ìš”ì²ì—� ì�‘답
- 마스터 서버 ì •ë³´(ip, port)를 받아 파ì�¼ë¡œ ì €ìž¥
- 루트 태블릿 주소 가�
- 마스터 서버�게 받는다
- 마스터 서버�게 받는다
- 태블릿 서버 ì •ë³´(ip, port)를 받아 파ì�¼ë¡œ ì €ìž¥









