前言
這是看GFS的論文的研讀筆記。
GFS設(shè)計目的
- 滿足日益增長的數(shù)據(jù)處理需求
GFS設(shè)計的目標(biāo)
高性能,可伸縮,高可靠,高可用
- 高性能:一般是指時間復(fù)雜度小,空間復(fù)雜度小,CPU占用時間少等
- 可伸縮:指程序性能硬件資源的增加和減少而增強(qiáng)或減弱的能力,可伸縮有很多種,線性伸縮(世界人民的目標(biāo)),超線性伸縮,負(fù)伸縮等,但是隨著程序規(guī)模的增大,伸展性會越來越差
- 可靠性:指程序在規(guī)定條件下,在規(guī)定時間內(nèi)完成規(guī)定任務(wù)的能力
- 可用性:就是一個系統(tǒng)處在可工作狀態(tài)的時間的比例
GFS設(shè)計假設(shè)
- 組件失效被認(rèn)為是常態(tài)事件,而不是意外事件。(容錯能力)
- 系統(tǒng)存儲一定數(shù)量的大文件。(大數(shù)據(jù))
- 系統(tǒng)的工作負(fù)載主要由兩種讀操作組成:大規(guī)模的流式讀取和小規(guī)模的隨機(jī)讀取。(讀寫模型)
- 系統(tǒng)的工作負(fù)載還包括許多大規(guī)模的、順序的、數(shù)據(jù)追加方式的寫操作。(讀寫模型)
- 系統(tǒng)必須高效的、行為定義明確的實(shí)現(xiàn)多客戶端并行追加數(shù)據(jù)到同一個文件里的語意。
- 高性能的穩(wěn)定網(wǎng)絡(luò)帶寬遠(yuǎn)比低延遲重要。
GFS設(shè)計架構(gòu)

GFS架構(gòu)圖.png
注解:
- 元數(shù)據(jù):命名空間、訪問控制信息、文件和Chunk的映射信息、以及當(dāng)前Chunk的位置信息
- 心跳:master以心跳周期來和chunk通信,給chunk指示以及收集他們當(dāng)前狀態(tài)
GFS系統(tǒng)設(shè)計的優(yōu)點(diǎn)
- 容錯性:每個塊都會復(fù)制到多個塊服務(wù)器上。缺省情況下,我們使用3個存儲復(fù)制節(jié)點(diǎn),不過用戶可以為不同的文件命名空間設(shè)定不同的復(fù)制級別。
- 單一的Master節(jié)點(diǎn):單一的Master簡化了設(shè)計,使架構(gòu)能變得簡單。Master一般會返回離Client最近的文件副本(減少網(wǎng)絡(luò)IO)
- Client采用庫形式:GFS客戶端代碼以庫的形式被鏈接到客戶程序里??蛻舳舜a實(shí)現(xiàn)了GFS文件系統(tǒng)的API接口函數(shù)、應(yīng)用程序與Master節(jié)點(diǎn)和Chunk服務(wù)器通訊、以及對數(shù)據(jù)進(jìn)行讀寫操作
- Chunk的大小選擇:默認(rèn)為64MB, 較大Chunk尺寸減少Client和Master通訊,減少M(fèi)aster存儲元數(shù)據(jù)的大小,Client對一個Chunk能進(jìn)行多次操作,減少網(wǎng)絡(luò)IO。
GFS系統(tǒng)的缺點(diǎn)
- 單一的Master節(jié)點(diǎn):有可能成為系統(tǒng)瓶頸,需要減少對Master的讀寫較大
- Chunk尺寸的缺點(diǎn):小文件會存儲為一個Chunk,多個Client同時對單個小文件多次操作時,存放這個Chunk的Server會成為熱點(diǎn)
系統(tǒng)缺點(diǎn)的解決:
- 單一的Master節(jié)點(diǎn):Client只詢問Master相關(guān)文件的元數(shù)據(jù)信息,Client對元數(shù)據(jù)信息做適當(dāng)緩存,后面的具體讀寫操作均在Chunk上
GFS交互流程

GFS數(shù)據(jù)交換操作圖.png