歡迎光臨
每天分享高質量文章

成為大資料頂尖程式員,先過了這些Hadoop面試題!(附答案解析)

導讀:在大資料開發崗位的需求下,工資待遇水漲船高,不少程式設計人員在面對職業瓶頸期的時候,會選擇轉程式設計方向發展。

你是否已經意識這是你人生中的一個重要轉機?能不能抓住這個時代的機遇,就在於你對大資料資訊的應用和獲取。而如何成為大資料時代的弄潮兒,掌握當下最緊缺的軟體技能是關鍵!谷歌、阿裡巴巴、百度、京東都在急需掌握hadoop技術的大資料人才!無論你精通大資料的哪一項類,都將在未來職場脫穎而出!

01 單選題

1、下麵哪個程式負責 HDFS 資料儲存?

a)NameNode
b)Jobtracker
c)Datanode
d)secondaryNameNode
e)tasktracker

答案 C datanode

2、HDfS 中的 block 預設儲存幾份?

a)3 份
b)2 份
c)1 份
d)不確定

答案 A 預設 3份

3、Hadoop 作者?

a)Martin Fowler

b)Kent Beck
c)Doug cutting

答案 C Doug cutting

4、下列哪個程式通常與 NameNode 在一個節點啟動?

a)SecondaryNameNode 

b)DataNodeb)DataNode

c)TaskTracker

d)Jobtracker

答案:D

此題分析: 

hadoop 的叢集是基於 master/slave 樣式,namenode 和 jobtracker 屬於 master,datanode 和 tasktracker 屬 於 slave,master 只 有 一 個 , 而 slave 有多個SecondaryNameNode 記憶體需求和 NameNode 在一個數量級上,所以通常 secondary ,NameNode(執行在單獨的物理機器上)和 NameNode 執行在不同的機器上。

JobTracker 和 TaskTracker,JobTracker 對應於 NameNode,TaskTracker 對應於 DataNode,DataNode 和 NameNode 是針對資料存放來而言的,JobTracker 和 TaskTracker 是對於 MapReduce 執行而言的,mapreduce 中幾個主要概念,mapreduce 整體上可以分為這麼幾條執行線索:obclient,JobTracker 與 TaskTracker。

JobClient會在使用者端透過JobClient類將應用已經配置引數打包成jar檔案儲存到hdfs,並把路徑提交到 Jobtracker,然後由 JobTracker 建立每一個 Task(即 MapTask 和ReduceTask)並將它們分發到各個 TaskTracker 服務中去執行。JobTracker 是一個 master 服務,軟體啟動之後 JobTracker 接收 Job,負責排程 Job的每一個子任務 task 執行於 TaskTracker 上,並監控它們,如果發現有失敗的 task 就重新執行它。一般情況應該把 JobTracker 部署在單獨的機器上。TaskTracker 是執行在多個節點上的 slaver 服務。TaskTracker 主動與 JobTracker 通訊,接收作業,並負責直接執行每一個任務。TaskTracker 都需要執行在 HDFS 的 DataNode上。

5、下列哪項通常是叢集的最主要瓶頸:

a)CPU
b)網路
c)磁碟 IO
d)記憶體

答案:C 磁碟

此題解析:

首先叢集的目的是為了節省成本,用廉價的 pc 機,取代小型機及大型機。小型機和大型機有什麼特點?

  1. cpu 處理能力強

  2. 記憶體夠大。所以叢集的瓶頸不可能是 a 和 d

  3. 網路是一種稀缺資源,但是並不是瓶頸。

  4. 由於大資料面臨海量資料,讀寫資料都需要 io,然後還要冗餘資料,hadoop 一般備 3份資料,所以 IO 就會打折扣。

6、 HDFS 預設 Block Size 

a)32MB
b)64MB
c)128MB

答案:B

7、關於 SecondaryNameNode 哪項是正確的?

a)它是 NameNode 的熱備

b)它對記憶體沒有要求
c)它的目的是幫助 NameNode 合併編輯日誌,減少 NameNode 啟動時間
d)SecondaryNameNode 應與 NameNode 部署到一個節點。

答案:C

02 多選題

1、下列哪項可以作為叢集的管理?

a)Puppet
b)Pdsh
c)Cloudera Manager
d)Zookeeper

答案:ABD

2、配置機架感知的下麵哪項正確:

a)如果一個機架出問題,不會影響資料讀寫
b)寫入資料的時候會寫到不同機架的 DataNode 中
c)MapReduce 會根據機架獲取離自己比較近的網路資料

答案 :ABC

3、Client 端上傳檔案的時候下列哪項正確?

a)資料經過 NameNode 傳遞給 DataNode
b)Client 端將檔案切分為 Block,依次上傳
c)Client 只上傳資料到一臺 DataNode,然後由 NameNode 負責 Block 複製工作

答案: B

此題分析:

lient 向 NameNode 發起檔案寫入的請求。

NameNode 根據檔案大小和檔案塊配置情況,傳回給 Client 它所管理部分 DataNode 的資訊。Client 將檔案劃分為多個 Block,根據 DataNode 的地址資訊,按順序寫入到每一個DataNode 塊中。

4、下列哪個是 Hadoop 執行的樣式:

a)單機版
b)偽分散式
c)分散式

答案:ABC

5、Cloudera 提供哪幾種安裝 CDH 的方法?

a)Cloudera manager
b)Tarball
c)Yum
d)Rpm

答案:ABCD

03 判斷題

1、 Ganglia 不僅可以進行監控,也可以進行告警。

正確

此題分析:此題的目的是考 Ganglia 的瞭解。嚴格意義上來講是正確。ganglia 作為一款最常用的 Linux 環境中的監控軟體,它擅長的的是從節點中按照使用者的需求以較低的代價採集資料。但是 ganglia 在預警以及發生事件後通知使用者上並不擅長。最新的 ganglia 已經有了部分這方面的功能。但是更擅長做警告的還有 Nagios。Nagios,就是一款精於預警、通知的軟體。透過將 Ganglia 和 Nagios 組合起來,把 Ganglia 採集的資料作為 Nagios 的資料源,然後利用 Nagios 來傳送預警通知,可以完美的實現一整套監控管理的系統。

2、Block Size 是不可以修改的。

錯誤 

此題分析:它是可以被修改的 Hadoop 的基礎配置檔案是 hadoop-default.xml,預設建立一個 Job 的時候會建立 Job 的 Config,Config 首先讀入 hadoop-default.xml 的配置,然後再讀入 hadoop-site.xml 的配置(這個檔案初始的時候配置為),hadoop-site.xml 中主要配置需要改寫的 hadoop-default.xml 的系統級配置。

3、Nagios 不可以監控 Hadoop 叢集,因為它不提供 Hadoop 支援。

錯誤 

此題分析:Nagios 是叢集監控工具,而且是雲端計算三大利器之一

4、如果 NameNode 意外終止,SecondaryNameNode 會接替它使叢集繼續工作。

錯誤 

此題分析:SecondaryNameNode 是幫助恢復,而不是替代,如何恢復,可以檢視

5、Cloudera CDH 是需要付費使用的。

錯誤 

此題分析:第一套付費產品是 Cloudera Enterpris,Cloudera Enterprise 在美國加州舉行的Hadoop 大會 (Hadoop Summit) 上公開,以若干私有管理、監控、運作工具加強Hadoop 的功能。收費採取合約訂購方式,價格隨用的 Hadoop 叢集大小變動。

6、Hadoop 是 Java 開發的,所以 MapReduce 只支援 Java 語言編寫。

錯誤 

此題分析:rhadoop 是用 R 語言開發的,MapReduce 是一個框架,可以理解是一種思想,可以使用其他語言開發。

7、Hadoop 支援資料的隨機讀寫。

錯誤

此題分析:lucene是支援隨機讀寫的,而 hdfs 只支援隨機讀。但是 HBase 可以來補救。HBase提供隨機讀寫,來解決 Hadoop 不能處理的問題。HBase自底層設計開始即聚焦於各種可伸縮性問題:表可以很“高”,有數十億個資料行;也可以“寬”,有數百萬個列;水平分割槽併在上千個普通商用機節點上自動複製。表的樣式是物理儲存的直接反映,使系統有可能提高高效的資料結構的序列化、儲存和檢索。

8、NameNode 負責管理 metadata,client 端每次讀寫請求,它都會從磁碟中讀取或則會寫入 metadata 資訊並反饋 client 端。

錯誤

此題分析:

NameNode 不需要從磁碟讀取 metadata,所有資料都在記憶體中,硬碟上的只是序列化的結果,只有每次 namenode 啟動的時候才會讀取。

1)檔案寫入

Client 向 NameNode 發起檔案寫入的請求。

NameNode 根據檔案大小和檔案塊配置情況,傳回給 Client 它所管理部分 DataNode 的資訊。

Client 將檔案劃分為多個 Block,根據 DataNode 的地址資訊,按順序寫入到每一個DataNode 塊中。

2)檔案讀取

Client 向 NameNode 發起檔案讀取的請求。

9、NameNode 本地磁碟儲存了 Block 的位置資訊。

個人認為正確,歡迎提出其它意見

此題分析:DataNode是檔案儲存的基本單元,它將Block儲存在本地檔案系統中,儲存了Block的Meta-data,同時週期性地將所有存在的Block資訊傳送給NameNode。NameNode傳回檔案儲存的DataNode的資訊。Client讀取檔案資訊。

10、DataNode 透過長連線與 NameNode 保持通訊。

這個有分歧:具體正在找這方面的有利資料。下麵提供資料可參考。

首先明確一下概念:

(1)長連線


Client方與Server方先建立通訊連線,連線建立後不斷開,然後再進行報文傳送和接收。這種方式下由於通訊連線一直存在,此種方式常用於點對點通訊。

(2)短連線


Client方與Server每進行一次報文收發交易時才進行通訊連線,交易完畢後立即斷開連線。此種方式常用於一點對多點通訊,比如多個Client連線一個Server.

11、Hadoop 自身具有嚴格的許可權管理和安全措施保障叢集正常執行。

錯誤

此題分析:hadoop只能阻止好人犯錯,但是不能阻止壞人幹壞事。

12、Slave 節點要儲存資料,所以它的磁碟越大越好。

錯誤

此題分析:一旦Slave節點宕機,資料恢復是一個難題。

13、hadoop dfsadmin –report 命令用於檢測 HDFS 損壞塊。

錯誤

14、 Hadoop 預設排程器策略為 FIFO

正確

15、 叢集內每個節點都應該配 RAID,這樣避免單磁碟損壞,影響整個節點執行。

錯誤

此題分析:首先明白什麼是RAID,可以參考百科磁碟陣列。這句話錯誤的地方在於太絕對,具體情況具體分析。題目不是重點,知識才是最重要的。因為hadoop本身就具有冗餘能力,所以如果不是很嚴格不需要都配備RAID。具體參考第二題。

16、因為 HDFS 有多個副本,所以 NameNode 是不存在單點問題的。

錯誤

17、每個 map 槽就是一個執行緒。

錯誤 

此題分析:首先我們知道什麼是map 槽,map 槽->map slotmap slot 只是一個邏輯值 ( org.apache.hadoop.mapred.TaskTracker.TaskLauncher.numFreeSlots ),而不是對應著一個執行緒或者行程。

18、Mapreduce 的 input split 就是一個 block。

錯誤

19、NameNode 的 Web UI 埠是 50030,它透過 jetty 啟動的 Web 服務。

錯誤

20、Hadoop 環境變數中的 HADOOP_HEAPSIZE 用於設定所有 Hadoop 守護執行緒的記憶體。它預設是 200 GB。

錯誤

此題分析:hadoop為各個守護行程(namenode, secondarynamenode, jobtracker, datanode, tasktracker)統一分配的記憶體在hadoop-env.sh中設定,引數為HADOOP_HEAPSIZE,預設為1000M。

21、DataNode 首次加入 cluster 的時候,如果 log 中報告不相容檔案版本,那需要 NameNode執行“Hadoop namenode -format”操作格式化磁碟。

錯誤

此題分析:

首先明白介紹,什麼ClusterID。

ClusterID

添加了一個新的識別符號ClusterID用於標識叢集中所有的節點。當格式化一個Namenode,需要提供這個識別符號或者自動生成。這個ID可以被用來格式化加入叢集的其他Namenode。

二次整理

有的同學問題的重點不是上面分析內容,內容如下:

這個報錯是說明 DataNode 所裝的Hadoop版本和其它節點不一致,應該檢查DataNode的Hadoop版本 。

來源:36大資料(dashuju36)、網路大資料(ID:raincent_com)

感謝你讀到這裡

所以我們要給你發福利

請在後臺回覆20檢視詳情


推薦閱讀

日本老爺爺堅持17年用Excel作畫,我可能用了假的Excel···

180頁PPT,講解人工智慧技術與產業發展

終於有人把雲端計算、大資料和人工智慧講明白了!

資料告訴你:跟缺“芯”相比,中國當前的這個問題更致命!

Q: 你都有哪些面試的經驗和教訓?

歡迎留言與大家分享

覺得不錯,請把這篇文章分享給你的朋友

轉載 / 投稿請聯絡:baiyu@hzbook.com

更多精彩文章,請在公眾號後臺點選“歷史文章”檢視

贊(0)

分享創造快樂