HDFS原理分析:基本概念
HDFS是Hadoop Distribute File System 的簡(jiǎn)稱(chēng),也就是Hadoop的一個(gè)分布式文件系統(tǒng)。
一、HDFS的主要設(shè)計(jì)理念
1、存儲(chǔ)超大文件
這里的“超大文件”是指幾百M(fèi)B、GB甚至TB級(jí)別的文件。
2、最高效的訪(fǎng)問(wèn)模式是 一次寫(xiě)入、多次讀取(流式數(shù)據(jù)訪(fǎng)問(wèn))
HDFS存儲(chǔ)的數(shù)據(jù)集作為hadoop的分析對(duì)象。在數(shù)據(jù)集生成后,長(zhǎng)時(shí)間在此數(shù)據(jù)集上進(jìn)行各種分析。每次分析都將設(shè)計(jì)該數(shù)據(jù)集的大部分?jǐn)?shù)據(jù)甚至全部數(shù)據(jù),因此讀取整個(gè)數(shù)據(jù)集的時(shí)間延遲比讀取第一條記錄的時(shí)間延遲更重要。
3、運(yùn)行在普通廉價(jià)的服務(wù)器上
HDFS設(shè)計(jì)理念之一就是讓它能運(yùn)行在普通的硬件之上,即便硬件出現(xiàn)故障,也可以通過(guò)容錯(cuò)策略來(lái)保證數(shù)據(jù)的高可用。
二、HDFS的忌諱
1、將HDFS用于對(duì)數(shù)據(jù)訪(fǎng)問(wèn)要求低延遲的場(chǎng)景
由于HDFS是為高數(shù)據(jù)吞吐量應(yīng)用而設(shè)計(jì)的,必然以高延遲為代價(jià)。
2、存儲(chǔ)大量小文件
HDFS中元數(shù)據(jù)(文件的基本信息)存儲(chǔ)在namenode的內(nèi)存中,而namenode為單點(diǎn),小文件數(shù)量大到一定程度,namenode內(nèi)存就吃不消了。
三、HDFS基本概念
數(shù)據(jù)塊(block):大文件會(huì)被分割成多個(gè)block進(jìn)行存儲(chǔ),block大小默認(rèn)為64MB。每一個(gè)block會(huì)在多個(gè)datanode上存儲(chǔ)多份副本,默認(rèn)是3份。
namenode:namenode負(fù)責(zé)管理文件目錄、文件和block的對(duì)應(yīng)關(guān)系以及block和datanode的對(duì)應(yīng)關(guān)系。
datanode:datanode就負(fù)責(zé)存儲(chǔ)了,當(dāng)然大部分容錯(cuò)機(jī)制都是在datanode上實(shí)現(xiàn)的。
四、HDFS基本架構(gòu)圖
圖中有幾個(gè)概念需要介紹一下
Rack 是指機(jī)柜的意思,一個(gè)block的三個(gè)副本通常會(huì)保存到兩個(gè)或者兩個(gè)以上的機(jī)柜中(當(dāng)然是機(jī)柜中的服務(wù)器),這樣做的目的是做防災(zāi)容錯(cuò),因?yàn)榘l(fā)生一個(gè)機(jī)柜掉電或者一個(gè)機(jī)柜的交換機(jī)掛了的概率還是蠻高的。
五、HDFS寫(xiě)文件流程
思考:
在datanode執(zhí)行create file后,namenode采用什么策略給client分配datanode?
順序?qū)懭肴齻€(gè)datanode,寫(xiě)入過(guò)程中有一個(gè)datanode掛掉了,如何容錯(cuò)?
client往datanode寫(xiě)入數(shù)據(jù)時(shí)掛掉了,怎么容錯(cuò)?
六、HDFS讀文件流程
思考:namenode掛掉了怎么辦,這個(gè)時(shí)候HDFS是否有相應(yīng)的容錯(cuò)方案。


















 
 
 
 
 
 
 