Hadoop 面試題,看看書找答案,看看你能答對多少(2)
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. 下列哪一個程序一般與 NameNode 在一個節點啓動?
a)SecondaryNameNode b)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總體上能夠分爲這麼幾條執行線索:
jobclient,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上
4. Hadoop 做者
a)Martin Fowler b)Kent Beck c)Doug cutting
答案C Doug cutting
5. HDFS 默認 Block Size
a)32MB b)64MB c)128MB
答案:B
6. 下列哪項一般是集羣的最主要瓶頸
a)CPU b)網絡 c)磁盤IO d)內存
答案:C磁盤
首先集羣的目的是爲了節省成本,用廉價的pc機,取代小型機及大型機。小型機和大型機有什麼特色?
1.cpu處理能力強
2.內存夠大
因此集羣的瓶頸不多是a和d
3.若是是互聯網有瓶頸,可讓集羣搭建內網。每次寫入數據都要經過網絡(集羣是內網),而後還要寫入3份數據,因此IO就會打折扣。
一樣能夠參考下面帖子的實際案例
集羣瓶頸爲何磁盤io
7. 關於 SecondaryNameNode 哪項是正確的?
a)它是 NameNode 的熱備 b)它對內存沒有要求
c)它的目的是幫助 NameNode 合併編輯日誌,減小 NameNode 啓動時間
d)SecondaryNameNode 應與 NameNode 部署到一個節點
答案C。
D答案能夠參考第三題
多選題:
8. 下列哪項能夠做爲集羣的管理?
a)Puppet b)Pdsh c)Cloudera Manager d)Zookeeper
答案ABD
具體可查看
什麼是Zookeeper,Zookeeper的做用是什麼,在Hadoop及hbase中具體做用是什麼
9. 配置機架感知的下面哪項正確
a)若是一個機架出問題,不會影響數據讀寫
b)寫入數據的時候會寫到不一樣機架的 DataNode 中
c)MapReduce 會根據機架獲取離本身比較近的網絡數據
答案ABC
具體能夠參考
hadoop機架感知--增強集羣穩固性,該如何配置hadoop機架感知
10. Client 端上傳文件的時候下列哪項正確
a)數據通過 NameNode 傳遞給 DataNode
b)Client 端將文件切分爲 Block,依次上傳
c)Client 只上傳數據到一臺 DataNode,而後由 NameNode 負責 Block 複製工做
答案B
分析:
Client向NameNode發起文件寫入的請求。
NameNode根據文件大小和文件塊配置狀況,返回給Client它所管理部分DataNode的信息。
Client將文件劃分爲多個Block,根據DataNode的地址信息,按順序寫入到每個DataNode塊中。
具體查看
HDFS體系結構簡介及優缺點
11. 下列哪一個是 Hadoop 運行的模式
a)單機版 b)僞分佈式 c)分佈式
答案ABC
單機版,僞分佈式只是學習用的。
12. Cloudera 提供哪幾種安裝 CDH 的方法
a)Cloudera manager b)Tarball c)Yum d)Rpm
答案:ABCD具體能夠參考
Hadoop CDH四種安裝方式總結及實例指導
判斷題:
13. Ganglia 不只能夠進行監控,也能夠進行告警。( 正確)
分析:
此題的目的是考Ganglia的瞭解。嚴格意義上來說是正確。
ganglia做爲一款最經常使用的Linux環境中的監控軟件,它擅長的的是從節點中按照用戶的需求以較低的代價採集數據。可是ganglia在預警以及發生事件後通知用戶上並不擅長。最新的ganglia已經有了部分這方面的功能。可是更擅長作警告的還有Nagios。Nagios,就是一款精於預警、通知的軟件。經過將Ganglia和Nagios組合起來,把Ganglia採集的數據做爲Nagios的數據源,而後利用Nagios來發送預警通知,能夠完美的實現一整套監控管理的系統。
具體能夠查看
完美集羣監控組合ganglia和nagios
14. Block Size 是不能夠修改的。(錯誤 )
它是能夠被修改的
Hadoop的基礎配置文件是hadoop-default.xml,默認創建一個Job的時候會創建Job的Config,Config首先讀入hadoop-default.xml的配置,而後再讀入hadoop-site.xml的配置(這個文件初始的時候配置爲空),hadoop-site.xml中主要配置須要覆蓋的hadoop-default.xml的系統級配置。具體配置能夠參考下html
15. Nagios 不能夠監控 Hadoop 集羣,由於它不提供 Hadoop 支持。(錯誤 )
分析:
Nagios是集羣監控工具,並且是雲計算三大利器之一
16. 若是 NameNode 意外終止,SecondaryNameNode 會接替它使集羣繼續工做。(錯誤 )
分析:
SecondaryNameNode是幫助恢復,而不是替代,如何恢復,能夠查看
hadoop 根據SecondaryNameNode恢復Namenode
17. Cloudera CDH 是須要付費使用的。(錯誤 )
分析:
第一套付費產品是Cloudera Enterpris,Cloudera Enterprise在美國加州舉行的 Hadoop 大會 (Hadoop Summit) 上公開,以若干私有管理、監控、運做工具增強 Hadoop 的功能。收費採起合約訂購方式,價格隨用的 Hadoop 叢集大小變更。
18. Hadoop 是 Java 開發的,因此 MapReduce 只支持 Java 語言編寫。(錯誤 )
分析:
rhadoop是用R語言開發的,MapReduce是一個框架,能夠理解是一種思想,可使用其餘語言開發。
具體能夠查看
Hadoop簡介(1):什麼是Map/Reduce
19. Hadoop 支持數據的隨機讀寫。(錯 )
分析:
lucene是支持隨機讀寫的,而hdfs只支持隨機讀。可是HBase能夠來補救。
HBase提供隨機讀寫,來解決Hadoop不能處理的問題。HBase自底層設計開始即聚焦於各類可伸縮性問題:表能夠很「高」,有數十億個數據行;也能夠很「寬」,有數百萬個列;水平分區並在上千個普通商用機節點上自動複製。表的模式是物理存儲的直接反映,使系統有可能提升高效的數據結構的序列化、存儲和檢索。
20. NameNode 負責管理 metadata,client 端每次讀寫請求,它都會從磁盤中讀取或則會寫入 metadata 信息並反饋 client 端。(我的認爲正確,歡迎提出其它意見 )分析:
1)文件寫入
Client向NameNode發起文件寫入的請求。
NameNode根據文件大小和文件塊配置狀況,返回給Client它所管理部分DataNode的信息。
Client將文件劃分爲多個Block,根據DataNode的地址信息,按順序寫入到每個DataNode塊中。
2)文件讀取
Client向NameNode發起文件讀取的請求。
NameNode返回文件存儲的DataNode的信息。
Client讀取文件信息。
具體查看
hadoop中NameNode、DataNode和Client三者之間協做關係
21. NameNode 本地磁盤保存了 Block 的位置信息。( 我的認爲正確,歡迎提出其它意見)
分析:
DataNode是文件存儲的基本單元,它將Block存儲在本地文件系統中,保存了Block的Meta-data,同時週期性地將全部存在的Block信息發送給NameNode。
具體一樣查看
hadoop中NameNode、DataNode和Client三者之間協做關係
22. DataNode 經過長鏈接與 NameNode 保持通訊。(錯誤 )
首先明確一下概念:
(1).長鏈接
Client方與Server方先創建通信鏈接,鏈接創建後不斷開,
而後再進行報文發送和接收。這種方式下因爲通信鏈接一直
存在,此種方式經常使用於點對點通信。
(2).短鏈接
Client方與Server每進行一次報文收發交易時才進行通信連
接,交易完畢後當即斷開鏈接。此種方式經常使用於一點對多點
通信,好比多個Client鏈接一個Server.
23. Hadoop 自身具備嚴格的權限管理和安全措施保障集羣正常運行。(錯誤 )
hadoop只能阻止好人犯錯,可是不能阻止壞人幹壞事
具體可查看
hadoop安全性需不斷增強
24. Slave 節點要存儲數據,因此它的磁盤越大越好。( 錯誤)
分析:
一旦Slave節點宕機,數據恢復是一個難題
25. hadoop dfsadmin –report 命令用於檢測 HDFS 損壞塊。(錯誤 )
分析:
hadoop dfsadmin -report
用這個命令能夠快速定位出哪些節點down掉了,HDFS的容量以及使用了多少,以及每一個節點的硬盤使用狀況。
固然NameNode有個http頁面也能夠查詢,可是這個命令的輸出更適合咱們的腳本監控dfs的使用情況node
26. Hadoop 默認調度器策略爲 FIFO(正確 )
具體參考
Hadoop集羣三種做業調度算法介紹
27. 集羣內每一個節點都應該配 RAID,這樣避免單磁盤損壞,影響整個節點運行。(錯誤 )
分析:
首先明白什麼是RAID,能夠參考百科磁盤陣列。
這句話錯誤的地方在於太絕對,具體狀況具體分析。題目不是重點,知識才是最重要的。
由於hadoop自己就具備冗餘能力,因此若是不是很嚴格不須要都配備RAID。具體參考第二題。
28. 由於 HDFS 有多個副本,因此 NameNode 是不存在單點問題的。(錯誤 )
分析:
NameNode存在單點問題。瞭解詳細信息,能夠參考
Hadoop中Namenode單點故障的解決方案及詳細介紹AvatarNode
29. 每一個 map 槽就是一個線程。(錯誤 )
分析:首先咱們知道什麼是map 槽,map 槽->map slot
map slot 只是一個邏輯值 ( org.apache.hadoop.mapred.TaskTracker.TaskLauncher.numFreeSlots ),而不是對應着一個線程或者進程
具體見:
hadoop中槽-slot是線程仍是進程討論
30. Mapreduce 的 input split 就是一個 block。(錯誤 )
InputFormat的數據劃分、Split調度、數據讀取三個問題的淺析
31. NameNode 的 Web UI 端口是 50030,它經過 jetty 啓動的 Web 服務。(錯誤 )
分析:
根據下面,很顯然JOBTRACKER的 Web UI 端口是 50030
端口說明:
默認端口 設置位置
9000 namenode
8020 namenode
8021 JT RPC
50030 mapred.job.tracker.http.address JobTracker administrative web GUI
50070 dfs.http.address NameNode administrative web GUI
50010 dfs.datanode.address DataNode control port
50020 dfs.datanode.ipc.address DataNode IPC port, used for block transfer
50060 mapred.task.tracker.http.address Per TaskTracker web interface
50075 dfs.datanode.http.address Per DataNode web interface
50090 dfs.secondary.http.address Per secondary NameNode web interface
設置位置 描述信息
namenode 交互端口
namenode RPC交互端口
JT RPC 交互端口
mapred.job.tracker.http.address JobTracker administrative web GUI JOBTRACKER的HTTP服務器和端口
dfs.http.address NameNode administrative web GUI NAMENODE的HTTP服務器和端口
dfs.datanode.address DataNode control port DATANODE控制端口,主要用於DATANODE初始化時向NAMENODE提出註冊和應答請求
dfs.datanode.ipc.address DataNode IPC port, used for block transfer DATANODE的RPC服務器地址和端口
mapred.task.tracker.http.address Per TaskTracker web interface TASKTRACKER的HTTP服務器和端口
dfs.datanode.http.address Per DataNode web interface DATANODE的HTTP服務器和端口
dfs.secondary.http.address Per secondary NameNode web interface 輔助DATANODE的HTTP服務器和端口
32. Hadoop 環境變量中的 HADOOP_HEAPSIZE 用於設置全部 Hadoop 守護線程的內存。它默
認是 200 GB。( 錯誤)
hadoop爲各個守護進程(namenode,secondarynamenode,jobtracker,datanode,tasktracker)統一分配的內存在hadoop-env.sh中設置,參數爲HADOOP_HEAPSIZE,默認爲1000M。
具體參考hadoop集羣內存設置
33. DataNode 首次加入 cluster 的時候,若是 log 中報告不兼容文件版本,那須要 NameNode
執行「Hadoop namenode -format」操做格式化磁盤。(錯誤 )
分析:
首先明白介紹,什麼ClusterID
ClusterID
添加了一個新的標識符ClusterID用於標識集羣中全部的節點。當格式化一個Namenode,須要提供這個標識符或者自動生成。這個ID能夠被用來格式化加入集羣的其餘Namenode。
詳細內容可參考
hadoop集羣添加namenode的步驟及常識
以上答案經過多個資料驗證,對於資料不充分的內容,都標有」我的觀點「,給出本測試題抱着謹慎的態度,但願你們多批評指正。
轉載請註明:出自about雲http://www.aboutyun.com/thread-6787-1-1.htmlios