ASH84

Software Engineer/Developer, co-founder of Payhere. Ex-Banksalad. Intereseted in iteroperability, bootstrap company, writting.

[ꡬ지탱] GFS, Bigtable, Chubby

created:2012-12-13
updated:2015-07-03
edit
**GFS(Google File System)**
– λŒ€μš©λŸ‰ 데이터에 μ ν•©ν•œ λΆ„μ‚° νŒŒμΌμ‹œμŠ€ν…œ
– 1λŒ€μ˜ 머신에 닀루기 νž˜λ“  데이터λ₯Ό λ‹€λ£¨μ§€λ§Œ, μž‘μ€ λ°μ΄ν„°μ—λŠ” λΉ„ 적합
– ν•˜λ‚˜μ˜ 파일 = N 청크(64MB)
– ν•˜λ‚˜μ˜ μ²­ν¬λŠ” 3개의 μ²­ν¬μ„œλ²„μ— λ³΅μ œλ˜μ–΄ μ €μž₯.Β 
– 파일 μ ‘κ·Ό 방식 
– λŒ€μš©λŸ‰ λ°μ΄ν„°μ˜ 효율적 전솑에 섀계 초점.Β 
** **
** **
** **
**Bigtable**
– GFSλ₯Ό μ΄μš©ν•˜λ©΄μ„œ μž‘μ€ 데이터λ₯Ό 효율적으둜 μ“Έμˆ˜ 있게 ν•˜λŠ” λΆ„μ‚° μŠ€ν† λ¦¬μ§€.Β 
– κ±°λŒ€ν•œ ν…Œμ΄λΈ”
– λ‘œμš°ν‚€, μΉΌλŸΌνŒ¨λ°€λ¦¬, νƒ€μž„ μŠ€νƒ¬ν”„ ꡬ쑰 = 닀차원 맡(Multidimensional map)
– not use sql. ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μœΌλ‘œ 연동
***λ‘œμ»¬λ¦¬ν‹°(locality)**
– ν•„μš”ν•œ 데이터λ₯Ό ν•œκ³³μ— λͺ¨μ•„μ„œ λ‘λŠ” 것.Β 
– λΆ„μ‚° μ‹œμŠ€ν…œμ˜ μ„±λŠ₯ν–₯상을 μœ„ν•΄μ„œλŠ” λ‘œμ»¬λ¦¬ν‹°λ₯Ό κ³ λ €ν•œ λ””μžμΈ ν•„μš”.Β 
** **
**Chubby**
– μž‘μ€ λΆ„μ‚° 파일 μ‹œμŠ€ν…œ
– νŒŒμΌμ‹œμŠ€ν…œ, 잠금 μ„œλΉ„μŠ€(λ°°νƒ€μ œμ–΄), 이벀트 톡지(μƒνƒœ λ³€κ²½μ‹œ 이벀트 톡지)
– 1kb 미만의 νŒŒμΌλŒ€μƒ
– chubby 5 cell -> 5 replica
– 읽기에 μ΅œμ ν™” λ˜μ–΄ 있음.Β 
– νŒŒμΌμ€ λΆ€λΆ„μ—…λ°μ΄νŠΈλ₯Ό ν• μˆ˜ μ—†μœΌλ©΄, 파일 전체λ₯Ό μ—…λ°μ΄νŠΈ 해야함.Β 
**파일 잠금**
– 곡유 잠금 Β  => 파일 μˆ˜μ • 방지 
– 배타적 잠금 Β => μ•ˆμ „ν•œ 파일 μˆ˜μ •
**μ™ΈλΆ€ λ¦¬μ†ŒμŠ€ 잠금 **
**μ‹œν€€μ„œΒ **
– ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­ μœ νš¨μ„± νŒλ³„ 데이터
**failover**
– λ§ˆμŠ€ν„° μ •μ§€μ‹œ, λ‹€λ₯Έ replicaκ°€ λ§ˆμŠ€ν„°λ‘œ μ „ν™˜.
– λ§ˆμŠ€ν„° μ „ν™˜ μ‚¬μ΄μ˜ μ‹œκ°„μœΌλ‘œ νƒ€μž„μ•„μ›ƒ λ°œμƒ κ°€λŠ₯μ„± 있음.Β 
**이벀트**
– 파일 생성 λ˜λŠ” μ—…λ°μ΄νŠΈμ‹œ, 이벀트 λ°œμƒ.Β 
– 각 μ„œλ²„λ“€μ€ μ‹œλ™μ‹œ, νŠΉμ • 디렉토리에 νŒŒμΌμ„ λ§Œλ“€μ–΄μ„œ μžμ‹ μ˜ μ£Όμ†Œ 기둝.Β 
– λ§ˆμŠ€ν„°λŠ” κ·Έ 디렉토리λ₯Ό ν†΅ν•΄μ„œ μ„œλ²„ μ‹œμž‘/μ’…λ£Œλ₯Ό κ°μ‹œΒ 
– μ—­μœΌλ‘œ μ„œλ²„κ°€ λ§ˆμŠ€ν„°λ₯Ό κ°μ‹œ ν• μˆ˜λ„ 있음.Β 
**캐쉬 **
– chubby νŒŒμΌμ„ 읽으면, κ·Έ λ‚΄μš©μ„ μΊμ‰¬ν•΄μ„œ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λ‹€μ‹œ μš”μ²­μ‹œ, ν•΄λ‹Ή 데이터 전솑.Β 
– 파일 λ‚΄μš© μ—…λ°μ΄νŠΈμ‹œ, chubbyλŠ” λͺ¨λ“  캐쉬λ₯Ό 파기(였래된 μΊμ‰¬μ˜ μ‚¬μš© 제거)
**λ§ˆμŠ€ν„° μ„ μΆœ 기법**
– λ‹€μ–‘ν•œ κ³ μž₯ λ°œμƒμ΄ μžˆμ§€λ§Œ λ§ˆμŠ€ν„° μ„ λ°œ 기쀀은 ν•˜λ‚˜.Β 
– λ§ˆμŠ€ν„°λŠ” 절반 μ΄μƒμ˜ λ ˆν”Œλ¦¬μΉ΄κ°€ μ—°κ²°λ˜μ–΄ μžˆλŠ” μž₯μ†Œμ—μ„œ λ‚˜νƒ€λ‚œλ‹€.Β 
– κΈ°λ³Έ 5개의 λ ˆν”Œλ¦¬μΉ΄λ‘œ κ΅¬μ„±λ˜κΈ° λ•Œλ¬Έμ— μ •μƒμž‘λ™μ„ μœ„ν•΄μ„œλŠ” 3κ°œμ΄μƒμ΄ μ—°κ²°λœ μƒνƒœμ—¬μ•Ό ν•œλ‹€.Β 
*** μ»¨μ„Όμ„œμŠ€ μ•Œκ³ λ¦¬μ¦˜(Consensus algorithm) – Paxos**
– κ°€μž₯ 높은 번호λ₯Ό μ„ νƒν•˜κ³ , ν•©μ˜λ₯Ό μ΄λŒμ–΄ λ‚΄λŠ”.. ([http://wn.com/paxos_algorithm](http://wn.com/paxos_algorithm))
**λ§ˆμŠ€ν„°λ¦¬μŠ€(master lease)**
– μΌμ •ν•œ μ‹œκ°„μœΌλ‘œ paxos의 μ œμ•ˆκ³Ό 약속을 μƒλž΅ν•˜κ³  μˆ˜λ½μ—μ„œλΆ€ν„° μ‹œμž‘
– λ§ˆμŠ€ν„°κ°€ μ£Όλ„ν•˜μ§€λ§Œ, 과반수 μ΄μƒμ˜ ν•©μ˜κ°€ μžˆμ–΄μ•Ό ν•œλ‹€.Β 
– λ§ˆμŠ€ν„°λ¦¬μŠ€λŠ” λ§ˆμŠ€ν„°κ°€ 정상 λ™μž‘ν•˜λŠ”ν•œ 계속 κ°±μ‹ .
– μ •λ¦¬ν•˜λ©΄, λ§ˆμŠ€ν„°λ¦¬μŠ€λŠ” λ§ˆμŠ€ν„°κ°€ μ‚΄μ•„μžˆμ„λ•Œ, λ‹€μŒ λ§ˆμŠ€ν„°λ₯Ό μ œμ•ˆ/약속 단계없이 ν•©μ˜λ₯Ό μ£Όλ„ν•˜μ—¬ λ‹€μŒ λ§ˆμŠ€ν„°λ₯Ό μ„ μΆœν•˜λŠ” μ‹œκ°„μ„ λ§ν•œλ‹€.μ™„μ „νžˆ μƒˆλ‘œμš΄ μ„ μΆœμ€ λ§ˆμŠ€ν„°κ°€ μ •μ§€λ˜μ–΄ λ¦¬μŠ€κ°€ κ°±μ‹ λ˜μ§€ μ•ŠμœΌλ©΄, λ§ˆμŠ€ν„°κ°€ μ—†λŠ” μƒνƒœκ°€ λ°œμƒλ˜λŠ”λ°, κ·Έλ•Œ λ™μž‘ν•˜μ—¬, μƒˆλ‘œμš΄ λ§ˆμŠ€ν„°λ₯Ό μ„ μΆœν•œλ‹€.Β 

#bigtable  #Chubby  #dev  #GFS  #ꡬ글을 μ§€νƒ±ν•˜λŠ” κΈ°μˆ