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