天天看點

大資料面試題集錦-Hadoop面試題(二)-HDFS

你準備好面試了嗎?這裡有一些面試中可能會問到的問題以及相對應的答案。如果你需要更多的面試經驗和面試題,關注一下"張飛的豬大資料分享"吧,公衆号會不定時的分享相關的知識和資料。

1、 HDFS 中的 block 預設儲存幾份?

  預設儲存3份

2、HDFS 預設 BlockSize 是多大?

  預設64MB

3、負責HDFS資料存儲的是哪一部分?

  DataNode負責資料存儲

4、SecondaryNameNode的目的是什麼?

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

5、檔案大小設定,增大有什麼影響?

  HDFS中的檔案在實體上是分塊存儲(block),塊的大小可以通過配置參數( dfs.blocksize)來規定,預設大小在hadoop2.x版本中是128M,老版本中是64M。

  思考:為什麼塊的大小不能設定的太小,也不能設定的太大?

  HDFS的塊比磁盤的塊大,其目的是為了最小化尋址開銷。如果塊設定得足夠大,從磁盤傳輸資料的時間會明顯大于定位這個塊開始位置所需的時間。因而,傳輸一個由多個塊組成的檔案的時間取決于磁盤傳輸速率。

  如果尋址時間約為10ms,而傳輸速率為100MB/s,為了使尋址時間僅占傳輸時間的1%,我們要将塊大小設定約為100MB。預設的塊大小128MB。

  塊的大小:10ms×100×100M/s = 100M,如圖

大資料面試題集錦-Hadoop面試題(二)-HDFS

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

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

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

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

  HDFS存儲機制,包括HDFS的寫入資料過程和讀取資料過程兩部分

  HDFS寫資料過程

大資料面試題集錦-Hadoop面試題(二)-HDFS

  1)用戶端通過Distributed FileSystem子產品向NameNode請求上傳檔案,NameNode檢查目标檔案是否已存在,父目錄是否存在。

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

  3)用戶端請求第一個 block上傳到哪幾個datanode伺服器上。

  4)NameNode傳回3個datanode節點,分别為dn1、dn2、dn3。

  5)用戶端通過FSDataOutputStream子產品請求dn1上傳資料,dn1收到請求會繼續調用dn2,然後dn2調用dn3,将這個通信管道建立完成。

  6)dn1、dn2、dn3逐級應答用戶端。

  7)用戶端開始往dn1上傳第一個block(先從磁盤讀取資料放到一個本地記憶體緩存),以packet為機關,dn1收到一個packet就會傳給dn2,dn2傳給dn3;

dn1每傳一個packet會放入一個應答隊列等待應答。

  8)當一個block傳輸完成之後,用戶端再次請求NameNode上傳第二個block的伺服器。(重複執行3-7步)。

  HDFS讀資料過程

大資料面試題集錦-Hadoop面試題(二)-HDFS

  1)用戶端通過Distributed FileSystem向NameNode請求下載下傳檔案,NameNode通過查詢中繼資料,找到檔案塊所在的DataNode位址。

  2)挑選一台DataNode(就近原則,然後随機)伺服器,請求讀取資料。

  3)DataNode開始傳輸資料給用戶端(從磁盤裡面讀取資料輸入流,以packet為機關來做校驗)。

  4)用戶端以packet為機關接收,先在本地緩存,然後寫入目标檔案。

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

大資料面試題集錦-Hadoop面試題(二)-HDFS

1)第一階段:NameNode啟動

  (1)第一次啟動NameNode格式化後,建立fsimage和edits檔案。如果不是第一次啟動,直接加載編輯日志和鏡像檔案到記憶體。

  (2)用戶端對中繼資料進行增删改的請求。

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

  (4)NameNode在記憶體中對資料進行增删改查。

2)第二階段:Secondary NameNode工作

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

  (2)Secondary NameNode請求執行checkpoint。

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

  (4)将滾動前的編輯日志和鏡像檔案拷貝到Secondary NameNode。

  (5)Secondary NameNode加載編輯日志和鏡像檔案到記憶體,并合并。

  (6)生成新的鏡像檔案fsimage.chkpoint。

  (7)拷貝fsimage.chkpoint到NameNode。

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

9、NameNode與SecondaryNameNode 的差別與聯系?(☆☆☆☆☆)

機制流程看第7題

1)差別

  (1)NameNode負責管理整個檔案系統的中繼資料,以及每一個路徑(檔案)所對應的資料塊資訊。

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

2)聯系:

  (1)SecondaryNameNode中儲存了一份和namenode一緻的鏡像檔案(fsimage)和編輯日志(edits)。

  (2)在主namenode發生故障時(假設沒有及時備份資料),可以從SecondaryNameNode恢複資料。

10、HDFS組成架構(☆☆☆☆☆)

大資料面試題集錦-Hadoop面試題(二)-HDFS

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

1)Client:就是用戶端。

  (1)檔案切分。檔案上傳HDFS的時候,Client将檔案切分成一個一個的Block,然後進行存儲;

  (2)與NameNode互動,擷取檔案的位置資訊;

  (3)與DataNode互動,讀取或者寫入資料;

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

  (5)Client可以通過一些指令來通路HDFS;

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

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

  (2)管理資料塊(Block)映射資訊;

  (3)配置副本政策;

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

3)DataNode:就是Slave。NameNode下達指令,DataNode執行實際的操作。

  (1)存儲實際的資料塊;

  (2)執行資料塊的讀/寫操作。

4)Secondary NameNode:并非NameNode的熱備。當NameNode挂掉的時候,它并不能馬上替換NameNode并提供服務。

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

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

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

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

大資料面試題集錦-Hadoop面試題(二)-HDFS

ZKFailoverController主要職責

  1)健康監測:周期性的向它監控的NN發送健康探測指令,進而來确定某個NameNode是否處于健康狀态,如果機器當機,心跳失敗,那麼zkfc就會标記它處于一個不健康的狀态。

  2)會話管理:如果NN是健康的,zkfc就會在zookeeper中保持一個打開的會話,如果NameNode同時還是Active狀态的,那麼zkfc還會在Zookeeper中占有一個類型為短暫類型的znode,當這個NN挂掉時,這個znode将會被删除,然後備用的NN,将會得到這把鎖,更新為主NN,同時标記狀态為Active。

  3)當當機的NN新啟動時,它會再次注冊zookeper,發現已經有znode鎖了,便會自動變為Standby狀态,如此往複循環,保證高可靠,需要注意,目前僅僅支援最多配置2個NN。

  4)master選舉:如上所述,通過在zookeeper中維持一個短暫類型的znode,來實作搶占式的鎖機制,進而判斷那個NameNode為Active狀态

繼續閱讀