- 大數據技術原理與應用(第2版)
- 林子雨編著
- 1487字
- 2019-07-30 13:20:28
3.1 分布式文件系統
相對于傳統的本地文件系統而言,分布式文件系統(Distributed File System)是一種通過網絡實現文件在多臺主機上進行分布式存儲的文件系統。分布式文件系統的設計一般采用“客戶機/服務器”(Client/Server)模式,客戶端以特定的通信協議通過網絡與服務器建立連接,提出文件訪問請求,客戶端和服務器可以通過設置訪問權來限制請求方對底層數據存儲塊的訪問。
目前,已得到廣泛應用的分布式文件系統主要包括GFS和HDFS等,后者是針對前者的開源實現。
3.1.1 計算機集群結構
普通的文件系統只需要單個計算機節點就可以完成文件的存儲和處理,單個計算機節點由處理器、內存、高速緩存和本地磁盤構成。
分布式文件系統把文件分布存儲到多個計算機節點上,成千上萬的計算機節點構成計算機集群。與之前使用多個處理器和專用高級硬件的并行化處理裝置不同的是,目前的分布式文件系統所采用的計算機集群都是由普通硬件構成的,這就大大降低了硬件上的開銷。
計算機集群的基本架構如圖3-1所示。集群中的計算機節點存放在機架(Rack)上,每個機架可以存放8~64個節點,同一機架上的不同節點之間通過網絡互連(常采用吉比特以太網),多個不同機架之間采用另一級網絡或交換機互連。

圖3-1 計算機集群的基本架構
3.1.2 分布式文件系統的結構
在我們所熟悉的 Windows、Linux 等操作系統中,文件系統一般會把磁盤空間劃分為每 512字節一組,稱為“磁盤塊”,它是文件系統讀寫操作的最小單位,文件系統的塊(Block)通常是磁盤塊的整數倍,即每次讀寫的數據量必須是磁盤塊大小的整數倍。
與普通文件系統類似,分布式文件系統也采用了塊的概念,文件被分成若干個塊進行存儲,塊是數據讀寫的基本單元,只不過分布式文件系統的塊要比操作系統中的塊大很多。比如,HDFS默認的一個塊的大小是64 MB。與普通文件不同的是,在分布式文件系統中,如果一個文件小于一個數據塊的大小,它并不占用整個數據塊的存儲空間。
分布式文件系統在物理結構上是由計算機集群中的多個節點構成的,如圖3-2所示。這些節點分為兩類:一類叫“主節點”(Master Node),或者也被稱為“名稱節點”(NameNode);另一類叫“從節點”(Slave Node),或者也被稱為“數據節點”(DataNode)。名稱節點負責文件和目錄的創建、刪除和重命名等,同時管理著數據節點和文件塊的映射關系,因此客戶端只有訪問名稱節點才能找到請求的文件塊所在的位置,進而到相應位置讀取所需文件塊。數據節點負責數據的存儲和讀取,在存儲時,由名稱節點分配存儲位置,然后由客戶端把數據直接寫入相應數據節點;在讀取時,客戶端從名稱節點獲得數據節點和文件塊的映射關系,然后就可以到相應位置訪問文件塊。數據節點也要根據名稱節點的命令創建、刪除數據塊和冗余復制。

圖3-2 大規模文件系統的整體結構
計算機集群中的節點可能發生故障,因此為了保證數據的完整性,分布式文件系統通常采用多副本存儲。文件塊會被復制為多個副本,存儲在不同的節點上,而且存儲同一文件塊的不同副本的各個節點會分布在不同的機架上,這樣,在單個節點出現故障時,就可以快速調用副本重啟單個節點上的計算過程,而不用重啟整個計算過程,整個機架出現故障時也不會丟失所有文件塊。文件塊的大小和副本個數通??梢杂捎脩糁付ā?/p>
分布式文件系統是針對大規模數據存儲而設計的,主要用于處理大規模文件,如TB級文件。處理過小的文件不僅無法充分發揮其優勢,而且會嚴重影響到系統的擴展和性能。
3.1.3 分布式文件系統的設計需求
分布式文件系統的設計目標主要包括透明性、并發控制、可伸縮性、容錯以及安全需求等。但是,在具體實現中,不同產品實現的級別和方式都有所不同。表3-1給出了分布式文件系統的設計需求及其具體含義,以及HDFS對這些指標的實現情況。
表3-1 分布式文件系統的設計需求
