Home >> Blog >> Hadoop 分佈式文件系統 HDFS
hadoop distributed file system 分佈式文件系統 HDFS
Hadoop 分佈式文件系統 (HDFS) 是Hadoop應用程序使用的主要數據存儲系統。HDFS 採用 NameNode 和 DataNode 架構來實現分佈式文件系統,該系統提供對跨高度可擴展的 Hadoop 集群的數據的高性能訪問。
Hadoop 本身是一個開源分佈式處理框架,用於管理大數據應用程序的數據處理和存儲。HDFS 是許多 Hadoop 生態系統技術的關鍵部分。它為管理大數據池和支持相關的大數據分析應用程序提供了一種可靠的方法。
HDFS 是如何工作的?
HDFS 支持在計算節點之間快速傳輸數據。一開始,它與 MapReduce 緊密結合,MapReduce是一種數據處理框架,用於過濾和劃分集群中節點之間的工作,並將結果組織並濃縮為查詢的連貫答案。類似地,當 HDFS 接收數據時,它會將信息分解為單獨的塊並將它們分發到集群中的不同節點。
使用 HDFS,數據在伺服器上寫入一次,之後可以多次讀取和重用。HDFS 有一個主 NameNode,它跟踪文件數據在集群中的保存位置。
HDFS 在商用硬件集群上也有多個 DataNode——通常集群中的每個節點一個。DataNode 通常組織在數據中心的同一機架內。數據被分解成單獨的塊並分佈在各種 DataNode 中進行存儲。塊也可以跨節點複製,從而實現高效的並行處理。
NameNode 知道哪個 DataNode 包含哪些塊以及 DataNode 駐留在機器集群中的什麼位置。NameNode 還管理對文件的訪問,包括跨 DataNode 的讀取、寫入、創建、刪除和數據塊複製
NameNode 與 DataNode 一起運行。因此,集群可以通過根據需要添加或減少節點來實時動態地適應伺服器容量需求。
DataNode 不斷與 NameNode 通信,以確定 DataNode 是否需要完成特定任務。因此,NameNode 總是知道每個 DataNode 的狀態。如果 NameNode 意識到一個 DataNode 不能正常工作,它可以立即將該 DataNode 的任務重新分配給包含相同數據塊的不同節點。DataNodes 也相互通信,這使它們能夠在正常的文件操作期間進行協作。
此外,HDFS 被設計為具有高度容錯性。文件系統多次復製或複製每條數據並將副本分發到各個節點,將至少一個副本放置在與其他副本不同的伺服器機架上。
HDFS 架構、NameNodes 和 DataNodes
HDFS 使用主/次架構。HDFS 集群的 NameNode 是管理文件系統命名空間和控制客戶端對文件的訪問的主伺服器。NameNode 作為 Hadoop 分佈式文件系統的核心組件,維護和管理文件系統命名空間,並為客戶端提供正確的訪問權限。系統的 DataNode 管理連接到它們運行的節點的存儲。
HDFS 公開了一個文件系統命名空間,並使用戶數據能夠存儲在文件中。一個文件被分成一個或多個塊,這些塊存儲在一組 DataNode 中。NameNode 執行文件系統命名空間操作,包括打開、關閉和重命名文件和目錄。NameNode 還控制塊到 DataNode 的映射。DataNode 服務於來自文件系統客戶端的讀取和寫入請求。此外,當 NameNode 指示它們執行塊創建、刪除和復制時,它們會執行塊創建、刪除和復制。
HDFS 支持傳統的分層文件組織。應用程序或用戶可以創建目錄,然後將文件存儲在這些目錄中。文件系統命名空間層次結構與大多數其他文件系統一樣——用戶可以創建、刪除、重命名或將文件從一個目錄移動到另一個目錄。
NameNode 記錄對文件系統名稱空間或其屬性的任何更改。應用程序可以規定 HDFS 應維護的文件的副本數。NameNode 存儲文件的副本數,稱為該文件的複制因子。
HDFS的特點
有幾個特性使 HDFS 特別有用,包括:
- 數據複製。這用於確保數據始終可用並防止數據丟失。例如,當一個節點崩潰或出現硬件故障時,可以從集群中的其他地方提取複製的數據,因此在恢復數據的同時繼續處理。
- 容錯性和可靠性。HDFS 複製文件塊並將它們跨節點存儲在大型集群中的能力確保了容錯性和可靠性。
- 高可用性。如前所述,由於跨筆記的複制,即使 NameNode 或 DataNode 發生故障,數據仍然可用。
- 可擴展性。由於 HDFS 將數據存儲在集群中的各個節點上,隨著需求的增加,一個集群可以擴展到數百個節點。
- 高吞吐量。由於 HDFS 以分佈式方式存儲數據,因此可以在節點集群上並行處理數據。這一點,加上數據局部性(見下一個項目符號),減少了處理時間並實現了高吞吐量。
- 數據局部性。使用 HDFS,計算發生在數據所在的 DataNode 上,而不是讓數據移動到計算單元所在的位置。通過最小化數據和計算過程之間的距離,這種方法減少了網絡擁塞並提高了系統的整體吞吐量。
使用 HDFS 有什麼好處?
使用 HDFS 有五個主要優點,包括:
- 成本效益。存儲數據的 DataNode 依賴於廉價的現成硬件,從而降低了存儲成本。此外,由於 HDFS 是開源的,因此沒有許可費。
- 大數據集存儲。HDFS 以任何格式存儲各種大小(從兆字節到PB不等)的數據,包括結構化和非結構化數據。
- 從硬件故障中快速恢復。HDFS 旨在檢測故障並自行自動恢復。
- 可移植性。 HDFS 可在所有硬件平台上移植,並且兼容多種操作系統,包括 Windows、Linux 和 Mac OS/X。
- 流數據訪問。HDFS 專為高數據吞吐量而構建,最適合訪問流數據。
更多關於大數據管理
Hadoop 是大數據管理的重要組成部分,但它並不是數據管理者應該了解的唯一方面。獲取完整圖片
- 大數據環境數據治理的 6 個最佳實踐
- 推動大數據發展的 5 個趨勢
- Hadoop 分佈式文件系統有助於處理大數據
HDFS 用例和示例
Hadoop 分佈式文件系統作為雅虎在線廣告投放和搜尋引擎需求的一部分出現在雅虎。與其他基於 Web 的公司一樣,雅虎處理各種應用程序,這些應用程序被越來越多的用戶訪問,這些用戶正在創建越來越多的數據。
EBay、Facebook、LinkedIn 和 Twitter 是使用 HDFS 支持大數據分析以解決與雅虎類似的需求的公司之一。
HDFS 的用途超出了滿足廣告服務和搜尋引擎的要求。紐約時報將其用作大規模圖像轉換的一部分,Media6Degrees 用於日誌處理和機器學習,LiveBet 用於日誌存儲和賠率分析,Joost 用於會話分析,Fox Audience Network 用於日誌分析和數據挖掘。HDFS 也是許多開源數據湖的核心。
更一般地說,多個行業的公司使用 HDFS 來管理大數據池,包括:
- 電力公司。電力行業在其輸電網絡中部署相量測量單元 (PMU) 以監測智能電網的運行狀況。這些高速傳感器在選定的輸電站通過幅度和相位測量電流和電壓。這些公司分析 PMU 數據以檢測網段中的系統故障並相應地調整電網。例如,他們可能會切換到備用電源或執行負載調整。PMU 網絡每秒記錄數千條記錄,因此,電力公司可以從廉價、高度可用的文件系統(如 HDFS)中受益。
- 行銷。有針對性的行銷活動取決於行銷人員對目標受眾的了解。行銷人員可以從多個來源獲取這些信息,包括CRM系統、直接郵件響應、銷售點系統、Facebook 和 Twitter。由於這些數據大部分是非結構化的,因此 HDFS 集群是在分析數據之前放置數據的最具成本效益的地方。
- 石油和天然氣供應商。石油和天然氣公司處理具有非常大數據集的各種數據格式,包括視頻、3D 地球模型和機器傳感器數據。HDFS 集群可以為所需的大數據分析提供合適的平台。
- 研究。分析數據是研究的關鍵部分,因此,HDFS 集群再次提供了一種經濟高效的方式來存儲、處理和分析大量數據。
HDFS 數據複製
數據複製是 HDFS 格式的重要組成部分,因為它確保在出現節點或硬件故障時數據仍然可用。如前所述,數據被分成塊並在集群中的許多節點上複製。因此,當一個節點出現故障時,用戶可以從其他機器訪問該節點上的數據。HDFS 定期維護複製過程。
想了解更多關於 HDFS 和 Hadoop 的總體信息嗎?查看我們的買家指南,了解使用 Hadoop 發行版的一些方式以及可用的產品類型。