日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop之MapReduce面试知识复习

發布時間:2024/2/28 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop之MapReduce面试知识复习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Hadoop之MapReduce面試知識復習


目錄

  • 談談Hadoop序列化和反序列化及自定義bean對象實現序列化?
  • FileInputFormat切片機制
  • 在一個運行的Hadoop 任務中,什么是InputSplit?
  • 自定義InputFormat流程
  • Maptask的個數由什么決定?
  • MapTask工作機制
  • ReduceTask工作機制
  • 請描述mapReduce有幾種排序及排序發生的階段
  • 請描述mapReduce中combiner的作用是什么,一般使用情景,哪些情況不需要,及和reduce的區別?
  • Mapreduce的工作原理,請舉例子說明mapreduce是怎么運行的?
  • 如果沒有定義partitioner,那數據在被送達reducer前是如何被分區的?
  • MapReduce 怎么實現 TopN?
  • 如何使用mapReduce實現兩個表的join?
  • 有可能使 Hadoop 任務輸出到多個目錄中么?如果可以,怎么做?
  • 什么樣的計算不能用mr來提速,舉5個例子

  • 1. 談談Hadoop序列化和反序列化及自定義bean對象實現序列化?

    已詳細總結過,請參考:Hadoop之Hadoop序列化


    2. FileInputFormat切片機制

    已詳細總結過,請參考:Hadoop之InputFormat數據輸入詳解


    3. 在一個運行的Hadoop 任務中,什么是InputSplit?

    已詳細總結過,可以參考:Hadoop之InputFormat數據輸入詳解

  • 找到你數據存儲的目錄。

  • 開始遍歷處理(規劃切片)目錄下的每一個文件

  • 遍歷第一個文件ss.txt

  • 獲取文件大小fs.sizeOf(ss.txt)

  • 計算切片大小 computeSliteSize(Math.max(minSize,Math.min(maxSize,blocksize)))=blocksize=128M

  • 默認情況下,切片大小=blocksize

  • 開始切,形成第1個切片:ss.txt—0:128M 第2個切片ss.txt—128:256M 第3個切片ss.txt—256M:300M(每次切片時,都要判斷切完剩下的部分是否大于塊的1.1倍,不大于1.1倍就劃分一塊切片)

  • 將切片信息寫到一個切片規劃文件中

  • 整個切片的核心過程在getSplit()方法中完成

  • 數據切片只是在邏輯上對輸入數據進行分片,并不會在磁盤上將其切分成分片進行存儲。InputSplit只記錄了分片的元數據信息,比如起始位置、長度以及所在的節點列表等

  • 注意:block是HDFS物理上存儲的數據,切片是對數據邏輯上的劃分

  • 提交切片規劃文件到yarn上,yarn上的MrAppMaster就可以根據切片規劃文件計算開啟maptask個數。


  • 4. 自定義InputFormat流程

  • 自定義一個類繼承FileInputFormat
  • 改寫RecordReader,實現一次讀取一個完整文件封裝為KV

  • 5. Maptask的個數由什么決定?

  • 一個job的map階段MapTask并行度(個數),由客戶端提交job時的切片個數決定。

  • 6. MapTask工作機制

    已詳細總結過,可以參考:Hadoop之MapTask工作機制


    7. ReduceTask工作機制

    已詳細總結過,可以參考:ReduceTask工作機制


    8. 請描述mapReduce有幾種排序及排序發生的階段

    排序的分類:

  • 部分排序:
    MapReduce根據輸入記錄的鍵對數據集排序。保證輸出的每個文件內部排序。

  • 全排序:
    如何用Hadoop產生一個全局排序的文件?最簡單的方法是使用一個分區。但該方法在處理大型文件時效率極低,因為一臺機器必須處理所有輸出文件,從而完全喪失了MapReduce所提供的并行架構。
    替代方案:首先創建一系列排好序的文件;其次,串聯這些文件;最后,生成一個全局排序的文件。主要思路是使用一個分區來描述輸出的全局排序。例如:可以為待分析文件創建3個分區,在第一分區中,記錄的單詞首字母a-g,第二分區記錄單詞首字母h-n, 第三分區記錄單詞首字母o-z。

  • 輔助排序:(GroupingComparator分組)
    Mapreduce框架在記錄到達reducer之前按鍵對記錄排序,但鍵所對應的值并沒有被排序。甚至在不同的執行輪次中,這些值的排序也不固定,因為它們來自不同的map任務且這些map任務在不同輪次中完成時間各不相同。一般來說,大多數MapReduce程序會避免讓reduce函數依賴于值的排序。但是,有時也需要通過特定的方法對鍵進行排序和分組等以實現對值的排序。

  • 二次排序:
    在自定義排序過程中,如果compareTo中的判斷條件為兩個即為二次排序。

  • 自定義排序WritableComparable
    bean對象實現WritableComparable接口重寫compareTo方法,就可以實現排序

  • @Overridepublic int compareTo(FlowBean o) {// 倒序排列,從大到小return this.sumFlow > o.getSumFlow() ? -1 : 1;}

    排序發生的階段:

  • 一個是在map side發生在spill后partition前。
  • 一個是在reduce side發生在copy后 reduce前。

  • 9. 請描述mapReduce中combiner的作用是什么,一般使用情景,哪些情況不需要,及和reduce的區別?

  • Combiner的意義就是對每一個maptask的輸出進行局部匯總,以減小網絡傳輸量。
  • Combiner能夠應用的前提是不能影響最終的業務邏輯,而且,Combiner的輸出kv應該跟reducer的輸入kv類型要對應起來。
  • Combiner和reducer的區別在于運行的位置。
  • Combiner是在每一個maptask所在的節點運行;
  • Reducer是接收全局所有Mapper的輸出結果。

  • 10. Mapreduce的工作原理,請舉例子說明mapreduce是怎么運行的?

    已詳細總結過,可以參考:Hadoop之MapReduce工作流程


    11. 如果沒有定義partitioner,那數據在被送達reducer前是如何被分區的?

    如果沒有自定義的 partitioning,則默認的 partition 算法,即根據每一條數據的 key的 hashcode 值模運算(%)reduce 的數量,得到的數字就是"分區號"。


    12. MapReduce 怎么實現 TopN?

    可以自定義groupingcomparator,對結果進行最大值排序,然后再reduce輸出時,控制只輸出前n個數。就達到了topn輸出的目的。


    13. 如何使用mapReduce實現兩個表的join?

  • reduce side join : 在map階段,map函數同時讀取兩個文件File1和File2,為了區分兩種來源的key/value數據對,對每條數據打一個標簽(tag),比如:tag=0 表示來自文件File1,tag=2 表示來自文件File2。
  • map side join : Map side join 是針對以下場景進行的優化:兩個待連接表中,有一個表非常大,而另一個表非常小,以至于小表可以直接存放到內存中。這樣,我們可以將小表復制多份,讓每個map task 內存中存在一份(比如存放到hash table 中),然后只掃描大表:對于大表中的每一條記錄key/value,在hash table 中查找是否有相同的key 的記錄,如果有,則連接后輸出即可。

  • 14. 有可能使 Hadoop 任務輸出到多個目錄中么?如果可以,怎么做?

    可以通過自定義outputformat來實現。

  • 自定義OutputFormat步驟
  • 自定義一個類繼承FileOutputFormat。
  • 改寫recordwriter,具體改寫輸出數據的方法write()。

  • 15. 什么樣的計算不能用mr來提速,舉5個例子

  • 數據量很小。
  • 繁雜的小文件。
  • 索引是更好的存取機制的時候。
  • 事務處理。
  • 只有一臺機器的時候。
  • 總結

    以上是生活随笔為你收集整理的Hadoop之MapReduce面试知识复习的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。