Hadoop面試題(四)——YARN

1、簡述hadoop1與hadoop2 的架構異同

1)加入了yarn解決了資源調度的問題。
2)加入了對zookeeper的支援實現比較可靠的高可用。

2、為什麼會產生 yarn,它解決了什麼問題,有什麼優勢?

1)Yarn最主要的功能就是解決運行的用戶程式與yarn框架完全解耦。
2)Yarn上可以運行各種類型的分散式運算程式(mapreduce只是其中的一種),比如mapreduce、storm程式,spark程式……

3、HDFS的數據壓縮演算法?(☆☆☆☆☆)

Hadoop中常用的壓縮演算法有bzip2、gzip、lzo、snappy,其中lzo、snappy需要作業系統安裝native庫才可以支援。
數據可以壓縮的位置如下所示。

企業開發用的比較多的是snappy

4、Hadoop的調度器總結(☆☆☆☆☆)

(1)默認的調度器FIFO
Hadoop中默認的調度器,它先按照作業的優先順序高低,再按照到達時間的先後選擇被執行的作業。
(2)計算能力調度器Capacity Scheduler
支援多個隊列,每個隊列可配置一定的資源量,每個隊列採用FIFO調度策略,為了防止同一個用戶的作業獨佔隊列中的資源,該調度器會對同一用戶提交的作業所佔資源量進行限定。調度時,首先按以下策略選擇一個合適隊列:計算每個隊列中正在運行的任務數與其應該分得的計算資源之間的比值,選擇一個該比值最小的隊列;然後按以下策略選擇該隊列中一個作業:按照作業優先順序和提交時間順序選擇,同時考慮用戶資源量限制和記憶體限制。
(3)公平調度器Fair Scheduler
同計算能力調度器類似,支援多隊列多用戶,每個隊列中的資源量可以配置,同一隊列中的作業公平共享隊列中所有資源。實際上,Hadoop的調度器遠不止以上三種,最近,出現了很多針對新型應用的Hadoop調度器。

5、MapReduce 2.0 容錯性(☆☆☆☆☆)

1)MRAppMaster容錯性
一旦運行失敗,由YARN的ResourceManager負責重新啟動,最多重啟次數可由用戶設置,默認是2次。一旦超過最高重啟次數,則作業運行失敗。
2)Map Task/Reduce
Task Task周期性向MRAppMaster彙報心跳;一旦Task掛掉,則MRAppMaster將為之重新申請資源,並運行之。最多重新運行次數可由用戶設置,默認4次。

6、mapreduce推測執行演算法及原理(☆☆☆☆☆)

1)作業完成時間取決於最慢的任務完成時間
一個作業由若干個Map 任務和Reduce 任務構成。因硬體老化、軟體Bug 等,某些任務可能運行非常慢。
典型案例:系統中有99%的Map任務都完成了,只有少數幾個Map老是進度很慢,完不成,怎麼辦?
2)推測執行機制
發現拖後腿的任務,比如某個任務運行速度遠慢於任務平均速度。為拖後腿任務啟動一個備份任務,同時運行。誰先運行完,則採用誰的結果。
3)不能啟用推測執行機制情況
(1)任務間存在嚴重的負載傾斜;
(2)特殊任務,比如任務向資料庫中寫數據。
4)演算法原理
假設某一時刻,任務T的執行進度為progress,則可通過一定的演算法推測出該任務的最終完成時刻estimateEndTime。另一方面,如果此刻為該任務啟動一個備份任務,則可推斷出它可能的完成時刻estimateEndTime`,於是可得出以下幾個公式:

  estimatedRunTime=(currentTimestamp-taskStartTime)/progress  
  estimateEndTime`= currentTimestamp+averageRunTime  

其中,currentTimestamp為當前時刻;taskStartTime為該任務的啟動時刻;averageRunTime為已經成功運行完成的任務的平均運行時間。這樣,MRv2總是選擇(estimateEndTime- estimateEndTime·)差值最大的任務,並為之啟動備份任務。為了防止大量任務同時啟動備份任務造成的資源浪費,MRv2為每個作業設置了同時啟動的備份任務數目上限。
推測執行機制實際上採用了經典的演算法優化方法:以空間換時間,它同時啟動多個相同任務處理相同的數據,並讓這些任務競爭以縮短數據處理時間。顯然,這種方法需要佔用更多的計算資源。在集群資源緊缺的情況下,應合理使用該機制,爭取在多用少量資源的情況下,減少作業的計算時間。

YARN調度器(Scheduler)詳解

Tags: