Google File System 論文解讀

1 簡介
    GFS特點:首先,組件失效被認爲是常態事件;其次,文件巨大;第三,文件修改多是尾部追回數據;第四,應用程序和文件系統API協同提高靈活性。

2 設計概述
    2.1 設計預期
        大量廉價組成,數量巨大的文件,大規模流式讀取和小規模隨機讀取,高效的、行爲定義明確的實現多客戶端並行追回數據到一個文件裏。
    2.2 接口
        類似傳統文件系統的API,另外提供了快照和記錄追加操作。
    2.3 架構
        一個集羣包括一個單獨的Master節點,多臺Chunk服務器,同時被多個客戶羰訪問。Master節點管理所有的文件系統元數據和系統範圍內的活動;
    2.4 單一Master節點
    2.5 Chunk尺寸
        64MB,遠大於傳統文件,優點:減少客戶羰和Master節點通訊的需求,顯著降低我們的工作負載來說效果;其次減少網絡負載;第三減少Master節點要保存的元數據量 。惰性空間分配策略避免內部碎片。
    2.6 元數據 
        文件和Chunk的命名空間、文件和Chunk的對應關係、Chunk副本的存放地點。
        元數據保存在內存中
        操作日誌到一定量時會對系統狀態做一次Checkpoint,創建新的Checkpoint文件,包括舊的日誌文件,舊的Checkpoint文件可以被刪除。
    2.7 一致性模型 
        寬鬆的一致性模型
        所有客戶端,無論哪個副本讀取,內容都是一樣,則認爲文件region是一致的;
        如修改之後,region是一致的且客戶端能夠看到寫入操作全部的內容,則這個region是已定義的;
        並行修改操作成功完成後,region處於一致的、未定義的狀態。(所有客戶端看到同樣的數據,但無法讀到任何一次寫入操作的數據)
        數據操作:寫入、追加兩種。
        寫入:把數據寫在應用程序指定的文件偏移位置上。
        追加:


3 系統交互
    3.1 租約和變更順序
        Master節點爲Chunk的一個副本建立一個租約,這個副本叫主Chunk,主Chunk對Chunk的所有更改操作進行序列化。

    3.2 數據流
        數據流和控制流分開。基於TCPl連接的,管理式數據推送方式來最小化延遲。
    3.3 原子的記錄追加

    3.4 快照 

4 Master節點的操作
    Master 節點執行所有的名稱空間操作。此外,它還管理着整個系統裏所有 Chunk 的副本:它決定 Chunk 的存儲位置,創建新 Chunk 和它的副本,協調各種各樣的系統活動以保證 Chunk 被完全複製,在所有的 Chunk 服務器之間的進行負載均衡,回收不再使用的存儲空間。本節我們討論上述的主題。

    4.1 名稱空間管理和鎖
    4.2 副本的位置
        原則:最大化數據可靠性和可用性,最大化網絡帶寬利用率。
    4.3 創建 重新複製 重新負載均衡 
        創建時選擇副本的位置,選擇副本:低於平均硬盤使用率、限制每個Chunk服務器上最近的Chunk的創建操作的次數、分佈在多個機架之間。
        Master選擇優先級最高的Chunk,然後命某個Chunk服務器從可用的副本拷貝出一個副本。
        Master服務器週期性地對副本進行重新負載均衡:它檢查當前的副本分佈情況,然後移動副本以便更好的利用硬盤空間、更有效的進行負載均衡
    4.4 垃圾回收
        採用惰性的策略,只在文件和Chunk級的常規垃圾收集時進行。
    4.5 過期失效的副本檢測 
        Chunk服務器重新啓動,並且向Master節點報告它擁有的Chunk的集合以及相應的版本號的時候,就會檢測出它包含過期的Chunk,在例行的垃圾回收過程中移除所有的過期失效副本。
5 容錯和診斷
    5.1 高可用性
        快速恢復和複製。
        Chunk複製到不同機架上,通過Chksum檢驗檢查已損壞的數據,Master節通過克隆已的副本保證。
    5.2 數據的完整性
    5.3 診斷工具
6 度量
    6.1 小規模基準測試
    6.2 實際應用中的集羣
    6.3 工作負荷分析

7 經驗
8 相關工作
9 結束語
10 致謝
11 參考 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章