深入理解一個技術的工作機制是靈活運用和快速解決問題的根本方法,也是唯一途徑。對于HDFS來說除了要明白它的應用場景和用法以及通用分布式架構之外更重要的是理解關鍵步驟的原理和實現(xiàn)細節(jié)。在看這篇博文之前需要對HDFS以及分布式系統(tǒng)有一些了解。請參考這篇博客。本篇博文首先對HDFS的重要特性和使用場景做一個簡要說明,之后對HDFS的數(shù)據(jù)讀寫、元數(shù)據(jù)管理以及NameNode、SecondaryNamenode的工作機制進行深入分析。過程中也會對一些配置參數(shù)做一個說明。
一.HDFS的重要特性
First. HDFS是一個文件系統(tǒng),用于存儲和管理文件,通過統(tǒng)一的命名空間(類似于本地文件系統(tǒng)的目錄樹)。是分布式的,服務器集群中各個節(jié)點都有自己的角色和職責。
Then.
1.HDFS中的文件在物理上是分塊存儲(block),塊的大小可以通過配置參數(shù)( dfs.blocksize)來規(guī)定,默認大小在hadoop2.x版本中是128M,之前的版本中是64M。
2.HDFS文件系統(tǒng)會給客戶端提供一個統(tǒng)一的抽象目錄樹,客戶端通過路徑來訪問文件,形如:hdfs://namenode:port/dir-a/dir-b/dir-c/file.data
3.目錄結構及文件分塊位置信息(元數(shù)據(jù))的管理由namenode節(jié)點承擔,namenode是HDFS集群主節(jié)點,負責維護整個hdfs文件系統(tǒng)的目錄樹,以及每一個路徑(文件)所對應的數(shù)據(jù)塊信息(blockid及所在的datanode服務器)
4.