HDFS架構(Master Slave) 幾個進程的角色 1. nameNode(master):用於保存、管理、持久化文件的元數據(文件名、文件副本數、文件塊大小、文件塊列表),同時還要接收客戶端的文件讀寫請求。 2. secondaryNameNode:用於實時同步文件元數據,給nameNode ...
HDFS架構(Master-Slave)
- 幾個進程的角色
- nameNode(master):用於保存、管理、持久化文件的元數據(文件名、文件副本數、文件塊大小、文件塊列表),同時還要接收客戶端的文件讀寫請求。
- secondaryNameNode:用於實時同步文件元數據,給nameNode服務做副本,擔當高可用備份,nameNode處於正常狀態時secondaryNameNode只sandBy。
- dataNode(slave):真正存儲文件塊,分佈在每個節點上。
- dfsClient:向hdfs發請求,當用戶發起一個hdfs文件讀、寫、查詢等請求時,集群都會啟動一個dfsClient進程,dfsClient先訪問nameNode獲取文件元數據,然後根據元數據解析出文件分片的分佈情況,最後去各dataNode完成真正的讀寫。它扮演著用戶與hdfs交互中間人的角色,同時文件的拆分和拼裝也是在dfsClient進程完成的。
- HDFS文件讀寫流程
- 讀取:系統接收到用戶讀請求後,首先啟動一個dfsClient進程,這個進程拿著用戶傳遞的文件路徑等信息,傳遞給nameNode,nameNode返迴文件分片的分佈節點列表,dfsClient就近讀取文件分片,並將各分片拼裝為完整文件返回給用戶。
- 寫入:系統接收到用戶寫請求後,首先啟動一個dfsClient進程,這個進程將寫入文件的信息提交給nameNode,nameNode根據集群情況將文件進行分片和位置規劃,再將規劃信息返回給dfsClient,dfsClient根據規劃信息將文件切分成特定的塊,然後根據位置規劃分別與對應的dataNode建立管道,將分片傳輸到對應的dataNode上。