HDFS(一)
HDFS(一)
參考:
http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html
https://www.cnblogs.com/zsql/p/11587240.html
Hadoop Distribute File System:Hadoop分布式文件系統,Hadoop核心組件之一,作為大數據生態圈最底層的分布式存儲服務而存在。
架構
架構圖:主從結構
一個HDFS集群是由一個Namenode和一定數目的Datanodes組成。
- Namenode是一個中心服務器,負責存儲和管理文件系統元數據信息(包括namespace目錄結構、文件塊位置信息等)以及客戶端對文件的訪問;
- Datanode負責管理它所在節點上的存儲;
- SecondaryNameNode是主角色的輔助角色,幫助主角色進行元數據的合并;
NameNode
-
維護和管理文件系統元數據,包括名稱空間目錄樹結構、文件和塊的位置信息、訪問權限等信息;HDFS的訪問的唯一入口
-
內部通過內存和磁盤文件兩種方式管理元數據,其中磁盤文件上的元數據文件包括FileSystemimage內存元數據鏡像文件(快照)和edits log編輯日志;
DataNode
負責具體的數據塊存儲,DataNode的數量決定了HDFS集群的整體數據存儲能力,通過與NameNode配合維護著數據塊。
Secondary NameNode
充當NameNode的輔助接點,但不能替代NameNode。當NameNode啟動時,NameNode合并FSimage和edits log文件以還原當前文件系統名稱空間,如果edits log過大不利于加載,Secondary NameNode就輔助NameNode從NameNode下載FSimage文件和edits log文件進行合并。
重要特性
- 主從架構
- 分塊存儲機制
- 副本機制(冗余存儲)
- namespace: 層次性文件組織結構
- 元數據管理:文件自身屬性信息;文件塊位置映射信息;
- 數據塊存儲
HDFS寫數據流程
Pipeline管道
客戶端將數據塊寫入第一個數據節點,第一個數據節點保存數據之后再將塊復制到第二個數據節點,后者保存后將其復制到第三個數據節點。
為什么datanode之間采用pipeline線性傳輸,而不是一次給三個datanode拓撲式傳輸?數據傳輸采用管道的方式,線性的沿著一個方向傳輸,這樣能夠充分的利用每個機器的帶寬,避免網絡瓶頸和高延遲時的連接,最小化推送所有數據的延時。在線性推送模式下,每臺機器所有的出口帶寬都用于以最快的速度傳輸數據,而不是在多個接受者之間分配帶寬。
ACK應答響應
副本存儲策略
- 第一塊副本:優先客戶端本地,否則隨機;
- 第二塊副本:不同于第一塊副本的機架;
- 第三塊副本:與第二塊副本相同機架的不同機器;
寫數據流程
HDFS讀數據流程
總結
- 上一篇: 大金新一代 E-MAX 8 系列空调上市
- 下一篇: MapReduce简述