HDFS(名称节点与数据节点)简介
HDFS:分布式文件系統(tǒng)把文件分布存儲到多個計算機節(jié)點上,成千上萬的計算機節(jié)點構(gòu)成計算機集群
這些節(jié)點分為主從節(jié)點,主節(jié)點可叫作名稱節(jié)點(NameNode),從節(jié)點可叫作數(shù)據(jù)節(jié)點(DataNode)
HDFS的存儲模式:
HDFS通過塊的模式存儲數(shù)據(jù),默認情況下一個塊是64M,把大文件拆分成多個塊,可以最小化尋址開銷
這樣的好處是:
1.支持大規(guī)模文件存儲 : 文件以塊為單位進行存儲,一個大規(guī)模文件可以被分拆成若干個文件塊,不同的文件塊可以被分發(fā)到不同的節(jié)點上,因此,一個文件的大小不會受到單個節(jié)點的存儲容量的限制,可以遠遠大于網(wǎng)絡中任意節(jié)點的存儲容量
2.簡化系統(tǒng)設置 : 因為文件塊大小是固定的,這樣就可以很容易計算出一個節(jié)點可以存儲多少文件塊;其次,方便了元數(shù)據(jù)的管理,元數(shù)據(jù)不需要和文件塊一起存儲,可以由其他系統(tǒng)負責管理元數(shù)據(jù)
3.適合數(shù)據(jù)備份 : 每個文件塊都可以冗余存儲到多個節(jié)點上,大大提高了系統(tǒng)的容錯性和可用性
名稱節(jié)點最主要功能:名稱節(jié)點記錄了每個文件中各個塊所在的數(shù)據(jù)節(jié)點的位置信息
名稱節(jié)點(NameNode)與DataNode的功能:
在HDFS中,名稱節(jié)點(NameNode)負責管理分布式文件系統(tǒng)的命名空間(Namespace),保存了兩個核心的數(shù)據(jù)結(jié)構(gòu),即FsImage和EditLog
FsImage用于維護文件系統(tǒng)樹以及文件樹中所有的文件和文件夾的元數(shù)據(jù)
操作日志文件EditLog中記錄了所有針對文件的創(chuàng)建、刪除、重命名等操作
名稱節(jié)點的啟動:
1.在啟動時,系統(tǒng)會將FsImage中的內(nèi)容加載到內(nèi)存中去,之后再執(zhí)行EditLog中的操作,使得內(nèi)存中的數(shù)據(jù)和實際同步,存在內(nèi)存中的支持客戶端的讀。
2.一旦在內(nèi)存中成功建立文件系統(tǒng)元數(shù)據(jù)的映射,則創(chuàng)建一個新的FsImage文件和一個空的EditLog文件
3.名稱節(jié)點起來之后,HDFS中的更新操作會重新寫到EditLog文件中,因為FsImage文件一般都很大(GB級別的很常見),
如果所有的更新操作都往FsImage文件中添加,這樣會導致系統(tǒng)運行的十分緩慢,但是,如果往EditLog文件里面寫就不會這樣,
因為EditLog 要小很多。每次執(zhí)行寫操作之后,且在向客戶端發(fā)送成功代碼之前,edits文件都需要同步更新
但為了防止EditLog過大的問題:引入了第二名稱節(jié)點(SecondaryNameNode)
第二名稱節(jié)點:是HDFS架構(gòu)中的一個組成部分,它是用來保存名稱節(jié)點中對HDFS 元數(shù)據(jù)信息的備份,并減少名稱節(jié)點重啟的時間。
SecondaryNameNode一般是單獨運行在一臺機器上
SecondaryNameNode讓EditLog變小的工作流程:
(1)SecondaryNameNode會定期和NameNode通信,請求其停止使用EditLog文件,暫時將新的寫操作寫到一個新的文件edit.new上來,這個操作是瞬間完成,上層寫日志的函數(shù)完全感覺不到差別;
(2)SecondaryNameNode通過HTTP GET方式從NameNode上獲取到FsImage和EditLog文件,并下載到本地的相應目錄下;
(3)SecondaryNameNode將下載下來的FsImage載入到內(nèi)存,然后一條一條地執(zhí)行EditLog文件中的各項更新操作,使得內(nèi)存中的FsImage保持最新;這個過程就是EditLog和FsImage文件合并;
(4)SecondaryNameNode執(zhí)行完(3)操作之后,會通過post方式將新的FsImage文件發(fā)送到NameNode節(jié)點上
(5)NameNode將從SecondaryNameNode接收到的新的FsImage替換舊的FsImage文件,同時將edit.new替換EditLog文件,通過這個過程EditLog就變小了
工作流程圖:
DataNode:數(shù)據(jù)節(jié)點是分布式文件系統(tǒng)HDFS的工作節(jié)點,負責數(shù)據(jù)的存儲和讀取,會根據(jù)客戶端或者是名稱節(jié)點的調(diào)度來進行數(shù)據(jù)的存儲和檢索,并且向名稱節(jié)點定期發(fā)送自己所存儲的塊的列表
即HDFS需要實現(xiàn)的方面:
1.兼容廉價的硬件設備
2.流數(shù)據(jù)讀寫
3.大數(shù)據(jù)集
4.簡單的文件模型
5.強大的跨平臺兼容性
但這樣面臨的局限性:
1.不適合低延遲數(shù)據(jù)訪問
2.無法高效存儲大量小文件
3.不支持多用戶寫入及任意修改文件
?
總結(jié)
以上是生活随笔為你收集整理的HDFS(名称节点与数据节点)简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uboot 详细注释讲解
- 下一篇: Davinci DM6446开发攻略-U