- HDFS甘薯以及設計目標
- HDFS架構
- HDFS副本機制
- HDFS讀取文件和寫入文件
1.Windows與Hadoop的文件管理的不同
- windows的文件管理系統是NTFS,Hadoop的文件管理系統是 HDFS
2.HDFS設計概念:
- 當數據集的大小超過單挑計算機的存儲能力時,就有必要進行分區並存儲到若干台單獨的計算機上,而管理網絡中跨多台計算機存儲的文件系統成為分布式文件系統。Hadoop有一個抽象的我呢間系統概念,HDFS 只是其中的一個實現
- HDFS的特點
- 適合存儲超大文件
- 運行於廉價硬件之上
- 易擴展,為用戶提供性能不錯的文件存儲服務
- 流式數據訪問
- HDFS的缺點
- 實時數據訪問弱(如果要求訪問時間在毫秒,做不到。針對數據吞吐量做了優化犧牲了速度。可以考慮:HBase)
- 大量的小文件
- 多用戶寫入,任意修改文件
3.HDFS架構
1.普通分布式文件系統的設計思路:
2.HDFS的架構:
- 一個完整的HDFS運行在一些節點之上,這些節點運行着不同類型的守護進程,如:Namenode,DataNode,SecondaryNameNode不同類型的節點相互配合,相互協作,在集群中扮演不同的角色一起構建了HDFS。
- 一個典型的HDFS 集群中,有要有一個NameNode,一個SecondarrNode和至少一個DataNode,而HDFS客戶端並沒有限制,所有的數據均存放在運行DataNode進程的節點塊(block)里
3.塊
塊是HDFS文件系統中組織的最小單位,默認64MB,可隨着需求而變化,配置項為hafd-site.xml文件中的dfs.block.size項,
塊的好處:
-
- 可以保存比存儲節點單一磁盤大的文件
- 簡化存儲子系統
- 容錯性高
4.NameNode和SecondaryNameNode
- 1.NameNode也被稱為名子節點,是HDFS的主從架構的主角色的扮演者。
- NameNode是HDFS的大腦,他維護着整個文件系統的目錄樹,以及目錄樹里所有的文件和目錄,這些信息以兩種文件存儲在本地文件中:一種是命名空間鏡像(FSImage)即HDFS元數據的完整快照,每次NameNode啟動的時候,默認加載最新的FSImage,另一種是命名空間鏡像的編寫日志(edit.log)
- 2.SecondaryNameNode
- SecondaryNameNode也稱為第二名子節點,用於定期合並命名空間鏡像和命名空間鏡像的編輯日志的輔助守護進程。每個HDFS集群都有一個。SecondaryNameNode在生產環境下,一般SecondaryNameNode也會單獨執行在一台服務器上
- 3.NameNode和SecondaryNode的交互
- 4. DataNode
- DataNode被稱為數據節點,他是HDFS的主從框架的從角色的扮演者它在NameNode的指導下完成I/O任務。存放在HDFS的文件都是由HDFS的塊組成,所有的塊都存放在DataNode節點。對於DataNode來講,塊就是一個普通文件。DataNode會不斷的向NameNode報告。初始化時,每個DataNode將當前存儲的塊告知NameNode,在集群正常工作時,DataNode任然會更新NameNode為之提供本地修改的相關信息,同時接受來自NameNode的指令,創建,移動或者刪除本地磁盤上的塊
- 5.HDFS客戶端
- HDFS的客戶端是指用戶和HDFS交互的手段,HDFS提供了非常多的客戶端,包括命令行接口,javaAPI
- 6.HDFS容錯機制(使文件系統能夠容忍節點故障且不丟失任何數據)
- 心跳機制(在NameNode和DataNode之間維持心跳檢測)
- 檢查文件塊的完整性
- 集群的負載均衡
- NameNode上的FSImage和編輯日志文件
- 文件的刪除
- 7.HDFS的副本機制
- 8.HDFS讀取文件和寫入文件
- 9.通過HDFS寫入文件