可以在http://master:50070上訪問hdfs的web頁面诅挑。
本文章主題如下:
HFDS結(jié)構(gòu)
NameNode
DataNode
Secondary NameNode
Block
Block副本管理
機架感知策略
-
HDFS結(jié)構(gòu)
Hadoop分布式系統(tǒng) —— HDFS,它是一個塊結(jié)構(gòu)文件系統(tǒng)肉渴,它的每個文件都被分割成許多預定大小的塊。這些塊被存儲在集群中的一臺或多臺機器上眶诈。HDFS遵循主/從結(jié)構(gòu)缩功,集群中擁有一臺單獨的NameNode(主節(jié)點)果善,其它節(jié)點都是DataNode(從節(jié)點)虚倒。
-
NameNode
NameNode維護并管理著DataNode上的block美侦。
以下是NameNode的功能:
- 維護并管理著DataNode節(jié)點;
記錄著集群中所有文件的元數(shù)據(jù)(metadata)信息魂奥,比如:block的存儲位置菠剩,文件的大小,權(quán)限耻煤,層級關系等具壮。有兩個文件關聯(lián)著元數(shù)據(jù)(metadata):
FsImage: 記錄著文件系統(tǒng)命名空間(namespace)自從上一次啟動之后的完整狀態(tài)。
-
EditsLog:記錄著相對于最近的FsImage哈蝇,客戶端對文件系統(tǒng)所有修改的信息棺妓。
- 記錄著文件系統(tǒng)中元數(shù)據(jù)所發(fā)生的所有變化,比如:HDFS中的某個文件被刪除炮赦,NameNode立即在EditLog中進行記錄怜跑。
- 定期從集群中的所有DataNode接收心跳和塊報告,用來確認DataNode是否宕機吠勘。
- 保存著HDFS中所有塊的記錄性芬,以及這些塊位于哪個節(jié)點。
- 負責處理所有塊的副本剧防。
- 在DataNode宕機的情況下植锉,NameNode會為副本選擇新的DataNode,平衡磁盤的使用量诵姜,管理DataNode間的通信流量汽煮。
-
DataNode
DataNode是HDFS中的從節(jié)點搏熄,它是將數(shù)據(jù)以ext3或者ext4這種文件格式棚唆,存儲在本地的塊服務器。
以下是DataNode的功能:
- 處理文件客戶端的低級讀寫請求心例。
向NameNode定期發(fā)送心跳匯報HDFS總體的健康狀況宵凌,默認情況下,每3秒發(fā)送一次止后。
-
Secondary NameNode
它的職責是輔助NameNode工作瞎惫,而不是備用節(jié)點。
它的功能如下:
- 合并來自NameNode的FsImage和EditLog译株,并將合并之后的FsImage文件拷貝給NameNode瓜喇。
-
Block
存儲在DataNode磁盤上的文件塊,默認大小是128M(1.x默認大小是64M),可通過hdfs-site.xml 文件配置dfs.blocksize 屬性來制定block大小歉糜。block文件可以在DataNone的
{dfs.datanode.data.dir}/data/current/XXX/current/finalized/xx/
目錄下找到乘寒。如果block塊太小,將會導致一個文件將會被分割成非常多的塊匪补,以至于會有非常多mateData數(shù)據(jù)伞辛,浪費內(nèi)存以及硬盤空間烂翰。
-
Block副本管理
Block默認是3個,
以在配置文件中設置蚤氏。
-
機架感知策略
HDFS的存放策略(機架感知策略)是將一個副本存放在本地機架的節(jié)點上甘耿,一個副本放在同一機架的另一個節(jié)點上,最后一個副本放在不同機架的節(jié)點上
機架感知策略的有點:
- 提高網(wǎng)絡性能:這種策略減少了機架間的數(shù)據(jù)傳輸竿滨,這就提高了寫操作的效率佳恬,數(shù)據(jù)塊只放在兩個(不是三個)不同的機架上,因此減少了讀取數(shù)據(jù)時需要的網(wǎng)絡傳輸總帶寬于游。
- 避免數(shù)據(jù)丟失:副本分布在不同機架上不同節(jié)點上殿怜,不會因為某個機架或者節(jié)點宕機而導致數(shù)據(jù)丟失。
文獻: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/