可以在http://master:50070上訪問hdfs的web頁面。
本文章主題如下:
HFDS結(jié)構(gòu)
NameNode
DataNode
Secondary NameNode
Block
Block副本管理
機(jī)架感知策略
-
HDFS結(jié)構(gòu)

Hadoop分布式系統(tǒng) —— HDFS,它是一個(gè)塊結(jié)構(gòu)文件系統(tǒng),它的每個(gè)文件都被分割成許多預(yù)定大小的塊。這些塊被存儲(chǔ)在集群中的一臺(tái)或多臺(tái)機(jī)器上。HDFS遵循主/從結(jié)構(gòu),集群中擁有一臺(tái)單獨(dú)的NameNode(主節(jié)點(diǎn)),其它節(jié)點(diǎn)都是DataNode(從節(jié)點(diǎn))。
-
NameNode

NameNode維護(hù)并管理著DataNode上的block。
以下是NameNode的功能:
- 維護(hù)并管理著DataNode節(jié)點(diǎn);
記錄著集群中所有文件的元數(shù)據(jù)(metadata)信息,比如:block的存儲(chǔ)位置,文件的大小,權(quán)限,層級(jí)關(guān)系等。有兩個(gè)文件關(guān)聯(lián)著元數(shù)據(jù)(metadata):
FsImage: 記錄著文件系統(tǒng)命名空間(namespace)自從上一次啟動(dòng)之后的完整狀態(tài)。
-
EditsLog:記錄著相對(duì)于最近的FsImage,客戶端對(duì)文件系統(tǒng)所有修改的信息。
- 記錄著文件系統(tǒng)中元數(shù)據(jù)所發(fā)生的所有變化,比如:HDFS中的某個(gè)文件被刪除,NameNode立即在EditLog中進(jìn)行記錄。
- 定期從集群中的所有DataNode接收心跳和塊報(bào)告,用來確認(rèn)DataNode是否宕機(jī)。
- 保存著HDFS中所有塊的記錄,以及這些塊位于哪個(gè)節(jié)點(diǎn)。
- 負(fù)責(zé)處理所有塊的副本。
- 在DataNode宕機(jī)的情況下,NameNode會(huì)為副本選擇新的DataNode,平衡磁盤的使用量,管理DataNode間的通信流量。
-
DataNode
DataNode是HDFS中的從節(jié)點(diǎn),它是將數(shù)據(jù)以ext3或者ext4這種文件格式,存儲(chǔ)在本地的塊服務(wù)器。
以下是DataNode的功能:
- 處理文件客戶端的低級(jí)讀寫請(qǐng)求。
向NameNode定期發(fā)送心跳匯報(bào)HDFS總體的健康狀況,默認(rèn)情況下,每3秒發(fā)送一次。
-
Secondary NameNode
它的職責(zé)是輔助NameNode工作,而不是備用節(jié)點(diǎn)。

它的功能如下:
- 合并來自NameNode的FsImage和EditLog,并將合并之后的FsImage文件拷貝給NameNode。
-
Block
存儲(chǔ)在DataNode磁盤上的文件塊,默認(rèn)大小是128M(1.x默認(rèn)大小是64M),可通過hdfs-site.xml 文件配置dfs.blocksize 屬性來制定block大小。block文件可以在DataNone的
{dfs.datanode.data.dir}/data/current/XXX/current/finalized/xx/目錄下找到。如果block塊太小,將會(huì)導(dǎo)致一個(gè)文件將會(huì)被分割成非常多的塊,以至于會(huì)有非常多mateData數(shù)據(jù),浪費(fèi)內(nèi)存以及硬盤空間。

-
Block副本管理
Block默認(rèn)是3個(gè),

以在配置文件中設(shè)置。
-
機(jī)架感知策略
HDFS的存放策略(機(jī)架感知策略)是將一個(gè)副本存放在本地機(jī)架的節(jié)點(diǎn)上,一個(gè)副本放在同一機(jī)架的另一個(gè)節(jié)點(diǎn)上,最后一個(gè)副本放在不同機(jī)架的節(jié)點(diǎn)上

機(jī)架感知策略的有點(diǎn):
- 提高網(wǎng)絡(luò)性能:這種策略減少了機(jī)架間的數(shù)據(jù)傳輸,這就提高了寫操作的效率,數(shù)據(jù)塊只放在兩個(gè)(不是三個(gè))不同的機(jī)架上,因此減少了讀取數(shù)據(jù)時(shí)需要的網(wǎng)絡(luò)傳輸總帶寬。
- 避免數(shù)據(jù)丟失:副本分布在不同機(jī)架上不同節(jié)點(diǎn)上,不會(huì)因?yàn)槟硞€(gè)機(jī)架或者節(jié)點(diǎn)宕機(jī)而導(dǎo)致數(shù)據(jù)丟失。
文獻(xiàn):https://www.edureka.co/blog/apache-hadoop-hdfs-architecture/?utm_source=quora&utm_medium=crosspost&utm_campaign=social-media-edureka-ab
http://zheming.wang/blog/2015/07/24/17505A21-0204-48AB-8EBE-EAC911B22821/