1. 程式人生 > >MapReduce相關的幾道面試題(一)

MapReduce相關的幾道面試題(一)

今天給大家介紹幾道MapReduce相關的面試題,這些題目是我或者別人在面試過程中遇到的,看看你能回答出幾道,明天將答案發放給大家。

題目1:現有100TB的使用者查詢詞(從搜尋引擎日誌中提取出來的),如何用MapReduce計算出現次數最多的K個查詢詞?如何對你設計的演算法進行優化?考慮的優化點有:如果一個查詢詞出現次數非常多,產生的負載傾斜問題會不會導致你的演算法效能非常低下,等等。

題目2:現有100TB的網頁文件(文件庫),很容易統計出每個文件中每兩個詞(詞對)出現頻率,設計一個MapReduce演算法統計出現在超過10個文件中的詞對,比如以下文件

I am a good man

那麼詞對有I am,I a,I good, I man, a man, am good …..

設計出演算法之後,嘗試考慮從以下幾點進行優化:

(1)在Map階段,一個Map Task可能會輸出大量的臨時資料,這可能會帶來什麼效能問題?如何對其進行優化?

(2)假設現在有一個詞頻表,已經統計出了文件庫中每個詞出現的頻率,怎麼利用這個詞頻表優化你的mapreduce程式?

(3)如果詞頻表非常大,記憶體放不下,有哪些資料結構可以節省記憶體?

(4)如果嘗試使用各種資料結構後,詞頻表仍無法儲存到記憶體中,如何進行解決該問題?

題目3:目前有很多基於MapReduce的資料探勘庫、機器學習庫和圖演算法庫,嘗試基於MapReduce實現最短路徑演算法。

題目4:Hadoop MapReduce提供了什麼機制允許一個作業的各個任務間共享只讀檔案?嘗試描述該機制的工作原理。

題目5:請描述MapReduce中shuffle階段的工作流程?如何優化shuffle階段?

題目6:一個MapReduce作業的Map Task數目是如何決定的?一般情況下,在Hadoop中,一個處理文字檔案的作業的Map Task是如何計算的?

題目7:什麼叫資料本地性?Hadoop採用了哪些機制提高任務的資料本地性?

題目8:描述Hadoop MapReduce的容錯機制。

題目9:MapReduce中Partitioner的作用是什麼,哪些情況下需要自定義Parititioner?

題目10:MapReduce中Combiner的作用是什麼,它一般用於哪些場景?舉出一個不能使用Combiner的例子。