HDFS簡介
HDFS是Hadoop核心組成, 是分佈式存儲服務
HDFS是分佈式文件系統中的一種緩存
HDFS的重要概念
HDFS經過統一的命名空間目錄樹來定位文件
另外, 它是分佈式的, 由不少服務器聯合起來實現其功能. 集羣中的服務器有各自的角色(分佈式本質是拆分, 各司其職)
HDFS架構
NameNode
: HDFS集羣的管理者, Master服務器
- 維護管理HDFS的命名空間(NameSpace)
- 維護副本策略
- 記錄文件塊(Block)的映射信息
- 負責處理客戶端讀寫請求
DataNode
: NameNode下達命令, DataNode執行實際操做, Slave網絡
Client
: 客戶端架構
- 上傳文件到HDFS的時候, Client負責將文件切分紅Block, 而後進行上傳
- 請求NameNode交互, 獲取文件的位置信息
- 讀取或寫入文件, 與DataNode交互
- Client可使用一些命令來管理HDFS或訪問HDFS
HDFS讀寫解析
HDFS讀數據流程
- 客戶端經過Distributed FileSystem向NameNode請求下載文件, NameNode經過查詢元數據找到文件塊所在的DataNode地址
- 挑選一臺DataNode(就近原則, 而後隨機)服務器, 請求讀取數據
- DataNode開始傳輸數據給客戶端 (從磁盤裏面讀取數據輸入流, 以Packet爲單位來作校驗)
- 客戶端以Packet爲單位接收, 先在本地緩存, 而後寫入目標文件
HDFS寫數據流程
- 客戶端經過Distributed FileSystem模塊向NameNode請求上傳文件, NameNode檢查目標文件是否已存在, 父目錄是否存在
- NameNode返回是否能夠上傳
- 客戶端請求第一個Block上傳到哪幾個DataNode服務器上
- NameNode返回3個DataNode節點, 分別是dn1, dn2, dn3
- 客戶端經過FSDataOutputStream模塊請求dn1上傳數據, dn1收到請求會繼續調用dn2, 而後dn2調用dn3, 將這個通訊管道創建完成
- dn1, dn2, dn3逐級應答客戶端
NN與2NN
NN故障處理
Hadoop的限額與歸檔以及集羣安全模式