一份 Hadoop 面試 【避坑指南】 拍了拍你!


在熱招的開發崗面試中,Hadoop、HDFS 題被面試官選中的機率非常大,也是 HR 的殺手鐗之一,常會被問的有以下幾種

  1. HDFS 的架構設計是怎樣的?

  2. HDFS 的讀寫流程是怎樣的?

  3. MapReduce 計算引擎中的 shuffle 是怎樣的?

  4. 簡要描述 Hadoop 跟 Spark 的區別。

 

多數人其實憑藉平時工作對海量數據處理的經驗,覺得這種面試題完全就是小case,不假思索就快速給出了答案:

 1. HDFS 是一個主從架構。從節點負責分攤集羣的工作,主節點負責進行從節點的管理。 

 2. HDFS 中默認文件中的而每個數據塊寫入三個副本,寫入過程是客戶端把第一個副本寫到第一個節點,再由第一個節點寫到第二個節點,再由第二個節點寫到第三個節點。

 3. MapReduce 的 shuffle 過程是:mapper 階段的輸出結果,根據分區規則把結果數據通過網絡傳輸到第二個階段,也就是 reducer 階段。

 4. Hadoop 提供分佈式的存儲和結算解決方案,但是 Spark 就提供了計算解決方案,所以說 Spark 替代 Hadoop 是不可能的。

 

但大家是否想過,這樣看似“突出要點式”的簡短回答,有沒有不知不覺正中了面試官下懷?我們來分析一下這幾個回答究竟踩中了哪些“坑”?

 1. 回答太過於簡潔,而且不完整,明顯感覺不全面,欠思考;

 2. 回答不夠細緻,因爲有些時候,面試官問的某些問題並不是他真正的問題,而是這個問題所延伸出來的問題。比如問你 HDFS 的讀寫流程,其實更多的是想知道 HDFS 到底怎麼確保一個文件,完好無損的寫入 HDFS,還要保證高效率、以及容錯相關的事兒;

 3. MapReduce 框架的核心部分,就是 Mapper 和 Reducer 之間的 shuffle 過程。Shuffle 過程非常複雜,既然面試官問你,肯定是想讓你更清楚詳盡的去描述這個過程,考察你對於知識深度的掌握情況。

 

那麼,避免陷入雷區,到底什麼樣的回答才接近滿分?彆着急,我來先給大家做個正確示範。

問題:MapReduce 的 shuffle 過程是怎樣的? 

示範如下:

 1. Mapper 階段做完數據的計算之後,會對該階段輸出的每個 key-value 進行 partition 分區計算。

 2. 把分區後的 key-value 寫入到默認大小爲 100M 的環形緩衝內存區中;

 3. 當該環形緩衝區的寫入的數據總量達到 80% 的閾值的時候,就會執行 Spill 溢寫磁盤操作;

 4. 在該操作之前,會調用 Sort 針對該 80% 的緩衝數據進行按照 key 排序;

 5. 然後 Mapper 階段的每個 Task 都有可能在執行過程中,輸出多個按照 key 排序的中間結果文件,爲了保證 reducer 階段能拿到排序好的數據,這些溢寫出來的磁盤文件,還會進行合併操作。最終每個 MapTask 都生成一個結果文件和一個索引文件。將來 Reducer 階段的 ReduceTask 就會先讀取索引文件,然後從結果文件中拉取自己這個 Task 需要的數據;

 6. 在輸出的過程中,如果用戶有設置 Combiner 組件,那麼還會調用 Combiner 進行局部聚合操作,以減輕 shuffle 過程中網絡負載的壓力;

 7. 當一個 Reducer 啓動運行之後,就開始從 MapTask 拉取數據。拉取過來的數據先放在內存中。如果該內存放不下,同樣也會進行溢寫操作,在溢寫的過程中,也會進行排序;

 8. 最後,每個 ReduceTask 其實都拉取到自己應該處理的數據之後,生成一個輸入文件。ReduceTask 在執行的時候,就掃描這個文件,按照 key 一組一組的執行邏輯處理;

 9. Reducer 數據結果。

你看,這樣的回答,是不是就更爲全面了?相對更詳盡完善的答案是完全能讓面試官眼前一亮的,這樣就離拿到offer大大邁進了一步。其實,爲了更加全面掌握 Hadoop 的底層原理,可以拓展一些相關閱讀。我給大家推薦幾本書:

  • 《Hadoop 技術內幕》

  • 《Hadoop:The Difinitive Guide》

  • 《Hadoop技術內幕:深入解析 YARN 架構設計與實現原理》

  • 《Hadoop技術內幕:深入解析 MapReduce 架構設計與實現原理》

 

看到這兒,程序員們該摸着厚如搬磚的資料犯難了,平日被 996 的工作壓榨的沒時間學習,就算下了班也只想舒服地“北京癱”一會兒。再者,書中講的知識固然權威,但紙上得來終覺淺,缺乏真實案例講解讓很多小夥伴在學習的過程中深刻體會到了困難重重。

那麼,對於這樣有自學困難的同學來說,什麼樣的學習技巧最實用?當然是跟着大佬學呀。但有人會問,“什麼樣的大佬願意教我呢?” “大佬又能在什麼時間教我呢?”

別急,這兒正好有個 《3天手寫一個 Hadoop 框架》免費訓練營   的機會拍了拍懵懂的你! 你沒看錯!免費!   3天,讓你輕鬆掌握海量數據的處理思路!3天,讓你玩轉分佈式系統引導的痛點 & 難點!

本次訓練營由哪位大佬坐陣?

除了大神馬老師,更有前 58 集團技術委員會主席、前轉轉公司首席架構師——孫玄,攜手前轉轉公司大數據平臺負責人——李希沅參與課程打磨,用 3 天沉浸式 Hadoop 訓練營大課,與 4000 人徹夜拿下 62 個面試漲薪技能點!給大家先預覽一波乾貨滿滿的課程大綱,下方高能:⬇️

添加課程顧問  獲取聽課地址

除了一次魔鬼訓練營就完事兒麼?

還有一大波福利等大家領!奈學教育,端午期間,豪禮放送!

這套視頻課程,詳細講解了【Kafka 源碼】、【大數據中臺】、【企業級大數據平臺搭建】等各類乾貨!原價 2699 元的資料包,現在免費送!(篇幅有限,截取部分以供預覽)

除此之外,講師集羣需要用到的各種程序進行了打包,根據視頻教學內容可以讓你輕鬆搭建完全分佈式環境,像在企業生產環境一樣進行學習和實踐!

包攬 BAT 行業大數據、編程架構各品目技術大咖,集合了前騰訊運營總監、前百度資深開發工程師、前微軟商業管理解決方案專家、前 58 集團架構師等,集體爲你送上了一份空前的大數據架構名師乾貨盛宴!

添加課程顧問 免費獲取資料

閱讀原文 精彩更多

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章