HDFS 技術原理(下)
HDFS 體系結構
HDFS 體系結構概述:
HDFS 採用了主從(Master/Slave)結構模型,一個 HDFS 集羣包括一個名稱節點(NameNode)和若干個數據節點(DataNode)。名稱節點作爲中心服務器,負責管理文件系統的命名空間及客戶端對文件的訪問。集羣中的數據節點一般是一個節點運行一個數據節點進程,負責處理文件系統客戶端的讀 / 寫請求,在名稱節點的統一調度下進行數據塊的創建、刪除和複製等操作。每個數據節點的數據實際上是保存在本地 Linux 文件系統中的。
HDFS 命名空間管理:
-
HDFS 的命名空間包含目錄、文件和塊。
-
在 HDFS1.0 體系結構中,在整個 HDFS 集羣中只有一個命名空間,並且只有唯一一個名稱節點,該節點負責對這個命名空間進行管理。
-
HDFS 使用的是傳統的分級文件體系,因此,用戶可以像使用普通文件系統一樣,創建、刪除目錄和文件,在目錄間轉移文件,重命名文件等。
通信協議:
-
HDFS 是一個部署在集羣上的分佈式文件系統,因此,很多數據需要通過網絡進行傳輸。
-
所有的 HDFS 通信協議都是構建在 TCP/IP 協議基礎之上的。
-
客戶端通過一個可配置的端口向名稱節點主動發起 TCP 連接,並使用客戶端協議與名稱節點進行交互。
-
名稱節點和數據節點之間則使用數據節點協議進行交互。
-
客戶端與數據節點的交互是通過 RPC(Remote Procedure Call)來實現的。在設計上,名稱節點不會主動發起 RPC,而是響應來自客戶端和數據節點的 RPC 請求。
客戶端:
-
客戶端是用戶操作 HDFS 最常用的方式,HDFS 在部署時都提供了客戶端。
-
HDFS 客戶端是一個庫,暴露了 HDFS 文件系統接口,這些接口隱藏了 HDFS 實現中的大部分複雜性。
-
嚴格來說,客戶端並不算是 HDFS 的一部分。
-
客戶端可以支持打開、讀取、寫入等常見的操作,並且提供了類似 Shell 的命令行方式來訪問 HDFS 中的數據。
-
此外,HDFS 也提供了 Java API,作爲應用程序訪問文件系統的客戶端編程接口。
HDFS 體系結構的侷限性:
HDFS 只設置唯一一個名稱節點,這樣做雖然大大簡化了系統設計,但也帶來了一些明顯的侷限性,具體如下:
-
命名空間的限制:名稱節點是保存在內存中的,因此,名稱節點能夠容納的對象(文件、塊)的個數會受到內存空間大小的限制。
-
性能的瓶頸:整個分佈式文件系統的吞吐量,受限於單個名稱節點的吞吐量。
-
隔離問題:由於集羣中只有一個名稱節點,只有一個命名空間,因此,無法對不同應用程序進行隔離。
-
集羣的可用性:一旦這個唯一的名稱節點發生故障,會導致整個集羣變得不可用。
HDFS 常用參數配置
1
2
3
HDFS 常用維護命令
4
5
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/QvQgb2kMorrXEbY8sBGKaQ