大數(shù)據(jù)Hadoop面試題(二)——HDFS

1、 HDFS 中的 block 默認(rèn)保存幾份?

默認(rèn)保存3份

2、HDFS 默認(rèn) BlockSize 是多大?

默認(rèn)64MB

3、負(fù)責(zé)HDFS數(shù)據(jù)存儲的是哪一部分?

DataNode負(fù)責(zé)數(shù)據(jù)存儲

4、SecondaryNameNode的目的是什么?

他的目的使幫助NameNode合并編輯日志,減少NameNode 啟動時間

5、文件大小設(shè)置,增大有什么影響?

HDFS中的文件在物理上是分塊存儲(block),塊的大小可以通過配置參數(shù)( dfs.blocksize)來規(guī)定,默認(rèn)大小在hadoop2.x版本中是128M,老版本中是64M。

思考:為什么塊的大小不能設(shè)置的太小,也不能設(shè)置的太大?

HDFS的塊比磁盤的塊大,其目的是為了最小化尋址開銷。如果塊設(shè)置得足夠大,從磁盤傳輸數(shù)據(jù)的時間會明顯大于定位這個塊開始位置所需的時間。因而,傳輸一個由多個塊組成的文件的時間取決于磁盤傳輸速率。

如果尋址時間約為10ms,而傳輸速率為100MB/s,為了使尋址時間僅占傳輸時間的1%,我們要將塊大小設(shè)置約為100MB。默認(rèn)的塊大小128MB。

塊的大?。?0ms100100M/s = 100M,如圖

[圖片上傳失敗...(image-1dd5bb-1599539314140)]

增加文件塊大小,需要增加磁盤的傳輸速率。

6、hadoop的塊大小,從哪個版本開始是128M

Hadoop1.x都是64M,hadoop2.x開始都是128M。

7、HDFS的存儲機(jī)制(☆☆☆☆☆)

HDFS存儲機(jī)制,包括HDFS的寫入數(shù)據(jù)過程讀取數(shù)據(jù)過程兩部分

HDFS寫數(shù)據(jù)過程

image

1)客戶端通過Distributed FileSystem模塊向NameNode請求上傳文件,NameNode檢查目標(biāo)文件是否已存在,父目錄是否存在。

2)NameNode返回是否可以上傳。

3)客戶端請求第一個 block上傳到哪幾個datanode服務(wù)器上。

4)NameNode返回3個datanode節(jié)點,分別為dn1、dn2、dn3。

5)客戶端通過FSDataOutputStream模塊請求dn1上傳數(shù)據(jù),dn1收到請求會繼續(xù)調(diào)用dn2,然后dn2調(diào)用dn3,將這個通信管道建立完成。

6)dn1、dn2、dn3逐級應(yīng)答客戶端。

7)客戶端開始往dn1上傳第一個block(先從磁盤讀取數(shù)據(jù)放到一個本地內(nèi)存緩存),以packet為單位,dn1收到一個packet就會傳給dn2,dn2傳給dn3;dn1每傳一個packet會放入一個應(yīng)答隊列等待應(yīng)答。

8)當(dāng)一個block傳輸完成之后,客戶端再次請求NameNode上傳第二個block的服務(wù)器。(重復(fù)執(zhí)行3-7步)。

HDFS讀數(shù)據(jù)過程

image

1)客戶端通過Distributed FileSystem向NameNode請求下載文件,NameNode通過查詢元數(shù)據(jù),找到文件塊所在的DataNode地址。

2)挑選一臺DataNode(就近原則,然后隨機(jī))服務(wù)器,請求讀取數(shù)據(jù)。

3)DataNode開始傳輸數(shù)據(jù)給客戶端(從磁盤里面讀取數(shù)據(jù)輸入流,以packet為單位來做校驗)。

4)客戶端以packet為單位接收,先在本地緩存,然后寫入目標(biāo)文件。

8、secondary namenode工作機(jī)制(☆☆☆☆☆)

image

1)第一階段:NameNode啟動

(1)第一次啟動NameNode格式化后,創(chuàng)建fsimage和edits文件。如果不是第一次啟動,直接加載編輯日志和鏡像文件到內(nèi)存。

(2)客戶端對元數(shù)據(jù)進(jìn)行增刪改的請求。

(3)NameNode記錄操作日志,更新滾動日志。

(4)NameNode在內(nèi)存中對數(shù)據(jù)進(jìn)行增刪改查。

2)第二階段:Secondary NameNode工作

(1)Secondary NameNode詢問NameNode是否需要checkpoint。直接帶回NameNode是否檢查結(jié)果。

(2)Secondary NameNode請求執(zhí)行checkpoint。

(3)NameNode滾動正在寫的edits日志。

(4)將滾動前的編輯日志和鏡像文件拷貝到Secondary NameNode。

(5)Secondary NameNode加載編輯日志和鏡像文件到內(nèi)存,并合并。

(6)生成新的鏡像文件fsimage.chkpoint。

(7)拷貝fsimage.chkpoint到NameNode。

(8)NameNode將fsimage.chkpoint重新命名成fsimage。

9、NameNode與SecondaryNameNode 的區(qū)別與聯(lián)系?(☆☆☆☆☆)

機(jī)制流程看第7題

1)區(qū)別

(1)NameNode負(fù)責(zé)管理整個文件系統(tǒng)的元數(shù)據(jù),以及每一個路徑(文件)所對應(yīng)的數(shù)據(jù)塊信息。

(2)SecondaryNameNode主要用于定期合并命名空間鏡像和命名空間鏡像的編輯日志。

2)聯(lián)系:

(1)SecondaryNameNode中保存了一份和namenode一致的鏡像文件(fsimage)和編輯日志(edits)。

(2)在主namenode發(fā)生故障時(假設(shè)沒有及時備份數(shù)據(jù)),可以從SecondaryNameNode恢復(fù)數(shù)據(jù)。

10、HDFS組成架構(gòu)(☆☆☆☆☆)

image

架構(gòu)主要由四個部分組成,分別為HDFS Client、NameNode、DataNode和Secondary NameNode。下面我們分別介紹這四個組成部分。

1)Client:就是客戶端。

(1)文件切分。文件上傳HDFS的時候,Client將文件切分成一個一個的Block,然后進(jìn)行存儲;

(2)與NameNode交互,獲取文件的位置信息;

(3)與DataNode交互,讀取或者寫入數(shù)據(jù);

(4)Client提供一些命令來管理HDFS,比如啟動或者關(guān)閉HDFS;

(5)Client可以通過一些命令來訪問HDFS;

2)NameNode:就是Master,它是一個主管、管理者。

(1)管理HDFS的名稱空間;

(2)管理數(shù)據(jù)塊(Block)映射信息;

(3)配置副本策略;

(4)處理客戶端讀寫請求。

3) DataNode:就是Slave。NameNode下達(dá)命令,DataNode執(zhí)行實際的操作。

(1)存儲實際的數(shù)據(jù)塊;

(2)執(zhí)行數(shù)據(jù)塊的讀/寫操作。

4) Secondary NameNode:并非NameNode的熱備。當(dāng)NameNode掛掉的時候,它并不能馬上替換NameNode并提供服務(wù)。

(1)輔助NameNode,分擔(dān)其工作量;

(2)定期合并Fsimage和Edits,并推送給NameNode;

(3)在緊急情況下,可輔助恢復(fù)NameNode。

11、HAnamenode 是如何工作的? (☆☆☆☆☆)

image

ZKFailoverController主要職責(zé)

1)健康監(jiān)測:周期性的向它監(jiān)控的NN發(fā)送健康探測命令,從而來確定某個NameNode是否處于健康狀態(tài),如果機(jī)器宕機(jī),心跳失敗,那么zkfc就會標(biāo)記它處于一個不健康的狀態(tài)。

2)會話管理:如果NN是健康的,zkfc就會在zookeeper中保持一個打開的會話,如果NameNode同時還是Active狀態(tài)的,那么zkfc還會在Zookeeper中占有一個類型為短暫類型的znode,當(dāng)這個NN掛掉時,這個znode將會被刪除,然后備用的NN,將會得到這把鎖,升級為主NN,同時標(biāo)記狀態(tài)為Active。

3)當(dāng)宕機(jī)的NN新啟動時,它會再次注冊zookeper,發(fā)現(xiàn)已經(jīng)有znode鎖了,便會自動變?yōu)镾tandby狀態(tài),如此往復(fù)循環(huán),保證高可靠,需要注意,目前僅僅支持最多配置2個NN。

4)master選舉:如上所述,通過在zookeeper中維持一個短暫類型的znode,來實現(xiàn)搶占式的鎖機(jī)制,從而判斷那個NameNode為Active狀態(tài)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容