1. 程式人生 > >大資料儲存系統(1)--- 分散式檔案系統

大資料儲存系統(1)--- 分散式檔案系統

分散式檔案系統 一、分散式系統概念 (1)分散式系統型別: Client/Server、P2P(Peer-to-Peer)、Master/Worker (2)故障模型(Failure Model): Fail stop:出現故障時,程序停止/崩潰 Fail slow:出現故障時,執行速度變得很慢 Byzantine failure:包含惡意攻擊 (3)CAP定理:三者不可得兼 Consistency:多份資料一致性 Availability:可用性 Partition tolerance:容忍網路斷開 二、分散式檔案系統 (1)本地檔案系統(Local File System): Linux ext4、Windows ntfs、Mac OS hfs……
(2)NFS(Sun’s Network File System): 定義了開放的client/server之間的通訊協議標準。 主要目的:從不同的終端都可以訪問同一個目錄;多使用者共享資料;集中管理。 系統架構:
設計目標1:伺服器出現故障,可以簡單快速恢復(Fail-stop模型)
。 實現過程1: <1>Stateless:NFS Server不保持任何狀態,每個操作都是無狀態的。 <2>Idempotent:Read,Write操作時Idempotent(冪等性)。 設計目標2:遠端檔案操作效能高。 解決思路2:Client cache(在記憶體中),快取讀寫的資料。存在問題,Cache Consistency。 對於Cache Consistency的解決辦法:Flush-on-close(或close-to-open)consistency;檔案關閉時,把快取的已修改的檔案資料,寫回NFS Server。然後每次在使用快取的資料前,必須檢查是否過時。方法是用GETATTR請求去poll(輪詢)
,獲得最新的文字屬性;然後比較檔案修改時間。 (3)AFS(Andrew File System): 設計目標:Scalability。即每一個伺服器支援儘可能多的客戶端,解決NFS polling狀態的問題。 解決polling狀態的問題:Invalidation。當Client獲得一個檔案時,在server上登記;當server發現檔案修改時,向已經登記的client發一個callback;當Client收到callback,則刪除快取的檔案。 其他不同點:AFS VS NFS AFS快取整個檔案;而NFS是以資料頁為單位的。 AFS快取在本地硬碟中,而NFS快取是在記憶體中,所以AFS可以快取大檔案。 AFS有統一的名字空間,而NFS可以mount到任何地方。 三、Google File System和HDFS HDFS為Google File System的開源實現。為應用層的檔案系統
。 (1)GFS設計目標:優化大塊資料的順序讀;並行追加(append)。不支援檔案修改操作。 (2)系統架構:
Name Node:儲存檔案的metadata(元資料)。檔名、長度、分成多少資料塊,每個資料塊分佈在哪些Data Node上。 Data Node:儲存資料塊。 檔案切分成定長的資料塊(預設為64MB大小)。 每個資料塊獨立地分佈儲存在Data Node上。預設每個資料塊儲存3份,在3個不同的data node上。 (3)讀寫操作 HDFS/GFS讀檔案:開啟檔案(通過Name Node);讀資料(通過Data Node,繞開Name Node)。 HDFS/GFS寫檔案:向Name Node請求寫資料塊,返回應該寫的Data Node;傳送資料塊,Data Node在記憶體中快取資料;傳送寫命令,收到寫命令後才真正進行寫操作,把快取的資料寫到檔案系統中。 不支援併發寫,支援併發Append!