您現在的位置是:首頁 > 運動

大資料分析工程師面試集錦6-HDFS

由 資料與智慧 發表于 運動2021-10-23
簡介出現錯誤的時候無法和namenode進行通訊,namenode要去確認datenode是不是宕掉了,這段時間稱作超時時長,hdfs預設時間是10分鐘30秒,確認該datanode宕機後,儲存在這個datanode上的相應檔案的副本數會減1,

什麼是hdfs

資料與智慧 本公眾號關注大資料與人工智慧技術。由一批具備多年實戰經驗的技術極客參與運營管理,持續輸出大資料、資料分析、推薦系統、機器學習、人工智慧等方向的原創文章,每週至少輸出10篇精品原創。同時,我們會關注和分享大資料與人工智慧行業動態。歡迎關注。

導語

本篇文章為大家帶來HDFS面試指南,題目大部分來自於網路上,有小部分是來自於工作中的總結,每個題目會給出一個參考答案。

為什麼考察HDFS?

作為大資料生態的基石,HDFS支撐著所有上層的元件,其重要性不言而喻。HDFS作為分散式儲存的基礎解決方案,為所有的其他元件提供高可用、穩定而高效的資料儲存服務。我們必須要了解其基本原理和概念,一方面可以對工作中排查問題有比較大的幫助,另一方面方便我們與他人溝通交流。

精選題型

基本概念

1

什麼是HDFS?

HDFS-Hadoop Distributed File System的縮寫,源自於Google的GFS,論文發表於2003年10月,HDFS是GFS克隆版,是一種易於擴充套件的分散式檔案系統,它可以執行在大量普通廉價機器上,提供容錯機制併為大量使用者提供效能不錯的檔案存取服務。

2

HDFS的優缺點

優點:

(1) 高容錯性

1) 資料自動儲存多個副本。它透過增加副本的形式,提高容錯性。

2) 某個副本丟失後,可以自動恢復。

(2) 適合批處理

1) 移動計算而不是移動資料。

2) 它會把資料位置暴露給計算框架。

(3) 適合大資料處理

1) 資料規模:能夠處理資料規模達到 GB、TB、甚至PB級別的資料。

2) 檔案規模:能夠處理百萬規模以上的檔案數量,數量相當之大。

3) 節點規模:能夠處理10K節點的規模。

(4) 流式資料訪問

1) 一次寫入,多次讀取,不能修改,只能追加。

2) 保證資料的一致性。

(5) 可構建在廉價機器上

1) 它透過多副本機制,提高可靠性。

2) 它提供了容錯和恢復機制。

缺點:

(1) 不適合低延時資料訪問;

1) 毫秒級內的讀寫資料,做不到。

2) 它適合高吞吐率的場景,就是在某一時間內寫入大量的資料。

(2) 無法高效的對大量小檔案進行儲存

1) 儲存大量小檔案的話,它會佔用 NameNode大量的記憶體來儲存檔案、目錄和塊資訊。這樣是不可取的,因為NameNode的記憶體總是有限的。

2) 小檔案儲存的尋道時間會超過讀取時間,它違反了HDFS的設計目標。

(3) 單個檔案不支援併發寫入、檔案隨機修改

1) 一個檔案只能有一個寫,不允許多個執行緒同時寫。

2) 僅支援資料追加,不支援檔案的隨機修改。

3

HDFS有哪些元件程序,它們有什麼作用?

1)NameNode:HDFS的主節點,負責維護檔案系統樹,管理檔案、目錄、塊等資訊以及HDFS名稱空間,協調並管理所有從節點,負責處理和排程客戶端的讀寫請求。

2)DataNode:HDFS的從節點,負責具體資料的儲存,處理與客戶端的互動,進行具體資料的讀寫操作。

3)JournalNode:主要作用是負責兩個NameNode之間的狀態同步。

4)ZKFC(ZKFailoverController):主要作用是監控NameNode的健康狀況,並實現Active狀態的自動轉移。

4

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狀態。

5

HDFS回收站機制,有什麼作用?

Trash是HDFS的回收站,HDFS會為每一個使用者建立一個回收站目錄:/user/使用者名稱/。Trash/。當用戶刪除檔案或目錄時,並不是直接刪除而是移動到了對應使用者的回收站目錄下。該目錄下的檔案會保留一段時間,之後自動刪除。保留時間長短可以配置,單位是分鐘,如果設定為0,表示不開啟回收站功能,具體配置內容如下所示:

//修改core-site。xml fs。trash。interval 1440

這個功能務必要開啟,因為它可以有效避免誤刪資料,避免錯誤操作帶來的嚴重後果。我們在刪除資料時,也最好不要跳過回收站,這樣即使出現失誤,也還有挽救的可能,不然資料是無法找回的。

6

HDFS資料塊(block)是什麼?主要作用和影響

資料塊是HDFS中的檔案在物理上的最小儲存單元,塊的大小可以透過配置引數( dfs。blocksize)來規定,預設大小在hadoop2。x版本中是128M,老版本中是64M。

HDFS的塊比磁碟的塊大(磁碟的塊一般為512位元組),其目的是為了最小化定址開銷。如果塊設定得足夠大,從磁碟傳輸資料的時間會明顯大於定位這個塊開始位置所需的時間。

一個HDFS檔案的資料塊數量影響程式在讀入這個檔案時候的分割槽數量,檔案在寫入到HDFS上的時候資料塊大小也會對最終的分割槽數有影響。

資料讀寫

7

HDFS存小檔案的影響和解決方案?

影響:

小檔案佔用了太多的塊資訊,消耗namenode的記憶體,尋道時間增加。

解決方案:

方案一:歸檔(多個小檔案合成一個)。缺點:無法更好的修改單個檔案。

方案二:轉為序列檔案。缺點:不方便檢視。

方案三:使用Combine函式合併,合併後,每一行都包含檔案路徑資訊。缺點:可能會產生過多額外資訊。

方案四:基於業務進行小檔案的合併,轉變成大檔案。例如:同一業務下,每小時產生的小檔案按天進行合併,每天的小檔案按月進行合併。

8

併發寫同一個HDFS檔案可行嗎?

不行, 因為客戶端透過namenode接收到在資料塊上寫入的許可後, 那個塊會鎖定直到寫入操作完成, 所以不能在同一個塊上寫入。

9

HDFS寫程式?

1)客戶端向NameNode發出寫檔案請求。

2)檢查是否已存在檔案、檢查許可權。若透過檢查,直接先將操作寫入EditLog,並返回輸出流物件。

3)client端按塊大小切分檔案。

4)client將NameNode返回的分配的可寫的DataNode列表和Data資料一同傳送給最近的第一個DataNode節點,此後client端和NameNode分配的多個DataNode構成pipeline管道,client端向輸出流物件中寫資料。

5)每個DataNode寫完一個塊後,會返回確認資訊。

6)寫完資料,關閉輸出流。

7)傳送完成訊號給NameNode,記錄檔名,大小,副本數量等資訊。

10

HDFS讀程式?

1)client訪問NameNode,查詢元資料資訊,獲得這個檔案的資料塊位置列表,返回輸入流物件。

2)就近挑選一臺datanode伺服器,請求建立輸入流 。

3)DataNode向輸入流中寫資料,以packet為單位來校驗。

4)讀取完成後,client關閉輸入流。

工作實操

11

寫出你在工作中用過的hdfs的命令?(參考文章)

(1):檔案路徑增刪改查系列:

hdfs dfs -mkdir dir 建立資料夾

hdfs dfs -rm -r dir 刪除資料夾dir

hdfs dfs -ls 檢視目錄檔案資訊

hdfs dfs -ls -R 遞迴檢視檔案目錄資訊

hdfs dfs -stat path 返回指定路徑的資訊

(2):空間大小檢視系列命令:

hdfs dfs -du -h dir 按照適合閱讀的形式人性化顯示檔案大小

hdfs dfs -du -s uri 顯示目標目錄的總大小

(3):許可權管理類:

hdfs dfs -chgrp group path 改變檔案所屬組

hdfs dfs -chgrp -R /dir 遞迴更改dir目錄的所屬組

hdfs dfs -chmod [-R] 許可權 -path 改變檔案的許可權

hdfs dfs -chown owner[:group] /dir 改變檔案的所有者

hdfs dfs -chown -R owner[:group] /dir 遞迴更改dir目錄的所屬使用者

(4):檔案操作(上傳下載複製)系列:

hdfs dfs -touchz a。txt 建立長度為0的空檔案a。txt

hdfs dfs -rm file 刪除檔案file

hdfs dfs -put file dir 向dir檔案上傳file檔案

hdfs dfs -put filea dir/fileb 向dir上傳檔案filea並且把filea改名為fileb

hdfs dfs -get file dir 下載file到本地資料夾

hdfs dfs -getmerge hdfs://Master:9000/data/SogouResult。txt CombinedResult 把hdfs裡面的多個檔案合併成一個檔案,合併後文件位於本地系統

hdfs dfs -cat file 檢視檔案file

hdfs fs -text /dir/a。txt 如果檔案是文字格式,相當於cat,如果檔案是壓縮格式,則會先解壓,再檢視

hdfs fs -tail /dir/a。txt 檢視dir目錄下面a。txt檔案的最後1000位元組

hdfs dfs -copyFromLocal localsrc path 從本地複製檔案

hdfs dfs -copyToLocal /hdfs/a。txt /local/a。txt 從hdfs複製到本地

hdfs dfs -copyFromLocal /dir/source /dir/target 把檔案從原路徑複製到目標路徑

hdfs dfs -mv /path/a。txt /path/b。txt 把檔案從a目錄移動到b目錄,可用於回收站恢復檔案

(5):判斷系列:

hdfs fs -test -e /dir/a。txt 判斷檔案是否存在,正0負1

hdfs fs -test -d /dir 判斷dir是否為目錄,正0負1

hdfs fs -test -z /dir/a。txt 判斷檔案是否為空,正0負1

12

HDFS的資料壓縮演算法?

優點

缺點

應用場景

Gzip 壓縮

壓縮率比較高,而且壓縮/解壓速度也比較快;hadoop 本身支援,在應用中處理gzip 格式的檔案就和直接處理文字一樣;大部分 linux 系統都自帶 gzip 命令,使用方便。

不支援 split。

當每個檔案壓縮之後在 130M 以內的(1 個塊大小內),都可以考慮用 gzip壓縮格式。

Bzip2 壓縮

支援 split;具有很高的壓縮率,比 gzip 壓縮率高;hadoop 本身支援,但不支援 native;在 linux 系統下自帶 bzip2 命令,使用方便。

壓縮/解壓速度慢;不支援 native。

適合對速度要求不高,但需要較高的壓縮率的時候,可以作為 mapreduce 作業的輸出格式;或者輸出之後的資料比較大,處理之後的資料需要壓縮存檔減少磁碟空間並且以後資料用得比較少的情況;或者對單個很大的文字檔案想壓縮減少儲存空間,同時又需要支援 split,而且相容之前的應用程式(即應用程式不需要修改)的情況。

Lzo 壓縮

壓縮/解壓速度也比較快,合理的壓縮率;支援 split,是 hadoop 中最流行的壓縮格式;可以在 linux 系統下安裝 lzop 命令,使用方便。

壓縮率比 Gzip 要低一些;

一個很大的文字檔案,壓縮之後還大於 200M 以上的可以考慮,而且單個檔案越大, lzo 優點越明顯。

Snappy 壓縮

高速壓縮速度和合理的壓縮率。

不支援 split;壓縮率比 gzip 要低;hadoop 本身不支援,需要安裝;

當 Mapreduce 作業的 Map 輸出的資料比較大的時候,作為 Map 到 Reduce的中間資料的壓縮格式;或者作為一個 Mapreduce 作業的輸出和另外一個 Mapreduce 作業的輸入。

13

三個datanode當有一個datanode出現錯誤會怎樣?

出現錯誤的時候無法和namenode進行通訊,namenode要去確認datenode是不是宕掉了,這段時間稱作超時時長,hdfs預設時間是10分鐘30秒,確認該datanode宕機後,儲存在這個datanode上的相應檔案的副本數會減1,然後namenode會啟動自動平衡機制,補全缺失的副本到其他機器上。

14

HDFS副本放置策略

系統預設有3個副本。其中:

第一個block副本放在client節點所在機架的datanode裡(如果client不在叢集範圍內,則隨機選取);

第二個block副本放置在與第一個datanode節點相同的機架中的另一個datanode中(隨機選擇);

第三個block副本放置於另一個隨機遠端機架的一個隨機datanode中;

如果還有更多的副本就隨機放在叢集的node裡。

15

HDFS可靠性策略

常見的三種錯誤是:檔案損壞、網路或者機器失聯、NameNode節點宕機。

對應的策略分別是:

1)CRC校驗、用其他副本取代損壞檔案;

2)心跳,DataNode定時向NameNode傳送心跳資訊;

3)HA,檔案系統映象多分儲存、主備NameNode實時切換。

小結

本篇HDFS面試指南,結合網路上的經典考題和工作中總結改編的題目一共15道,基本涉及了資料分析工作中常用的知識點,有概念類的也有實操類的,希望讀者可以查漏補缺,完善HDFS面試知識點。

參考文獻

[1] HDFS面試題,作者:tc_lwhhttps://blog。csdn。net/tclwh123/article/details/83903580[2] 大資料分析工程師入門7——HDFS&YARN基礎,作者:凱凱連 本公眾號文章[3] HDFS相關面試問題整理,作者:Dota_Datahttps://blog。csdn。net/dota_data/article/details/93221356[4] HDFS常用操作命令,作者:匕首博https://www。cnblogs。com/jichui/p/10444430。html[5] HDFS應用場景、原理、基本架構,作者:Alukarhttps://www。jianshu。com/p/ff8d26037e34[6] Hadoop面試必須知道的那些事兒,作者:呼呼https://zhuanlan。zhihu。com/p/24946274[7] 100 道常見 Hadoop 面試題及答案解析,作者:首席撩妹指導官https://blog。csdn。net/qq_36864672/article/details/78213304

-end-

推薦文章

  • 極氪X正式官宣,沒有門把手,百公里加速3秒級!

    極氪X正式官宣,沒有門把手,百公里加速3秒級!車身側面,雙色車身的設計,搭配上懸浮式車頂、寬大的輪眉、超大尺寸合金輪轂,以及浩瀚純電架構車型短前後懸的先天特性,營造出了蓄勢待發的車身姿態以及較強的運動氣質...

  • 煙臺:建築企業資質及安全許可申報時限減半

    市住建局圍繞“一次告知、一表申報、一窗受理、一次辦成”,透過規範事項辦理要件、合併事項申報材料、最佳化業務流程、科學配置等方式,將原建築業企業資質和建築施工企業安全生產許可證2個獨立事項的變更或登出業務最佳化整合成一件事一次辦,並對相關申報...

  • 曾是湖北絕密軍工廠,生產無數防毒面具,廢棄後竟改造成旅遊景點

    傍晚,下班的人們三三兩兩行走在廠區的公路上,有些工人們騎著腳踏車,急忙去菜市場買菜,有的端著陶瓷茶缸,去託兒所和子弟學校接送孩子,簡單又充滿煙火氣息的生活,就這麼一日一日的重複著...