Hadoop面試題(四)——YARN

大資料技術派發表於2021-10-24

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)詳解

相關文章