作者 | 曹世宏
接着上篇- 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常用參數配置
HDFS常用維護命令
往期推薦
喜歡的這裏報道
↘↘↘
本文分享自微信公衆號 - 程序猿DD(didispace)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。