Hadoop MapReduce 效能優化

2021-09-18 01:39:21 字數 735 閱讀 9509

我們時常談論說到mapreduce時,我們都會說它是離線計算框架,磁碟io開銷大,job執行比較慢等等。

這一篇部落格,南國系統回顧下mr程式執行慢的原因,以及如何優化mr程式。

我們都知道mapreduce是離線計算框架,不同於spark記憶體計算框架模型。乙個標準的mr程式由map方法和reduce方法構成,資料來源在map方法前輸入,map方法的輸出結果放在磁碟中 由shuffle階段進行處理後輸入到reduce方法,最後reduce方法的輸出作為mr程式的整個結果輸出儲存到hdfs中。

在這個過程中,mapreduce程式的效能瓶頸在於兩點:

使用sequencefile二進位制檔案。

這一部分內容,南國在之前的部落格hadoop處理資料傾斜中有講述到。

其實除此之外,開發者還可以在配置檔案中進行引數調優,例如mapred-default.xml,yarn-default.xml。

在上文,南國講述mapreduce優化方法時提到過資料輸入階段的合併小檔案。我們知道,mapreduce的資料來源一般來自於hdfs,所以 這裡也著重講一下hdfs小檔案的弊端和解決方案。

hdfs上每個檔案都要在namenode上建立乙個索引,這個索引的大小約為150byte,這樣當小檔案比較多的時候,就會產生很多的索引檔案,一方面會大量占用namenode的記憶體空間,另一方面就是索引檔案過大是的索引速度變慢。

1.hadoop本身提供了一些檔案壓縮的方案。

2.根本解決方式:進行小檔案的合併,然後建立比較快速的索引。

hadoop map reduce 階段筆記

shuffle and sort mr 框架保證 每個 reducer 的輸入都是按照 key 鍵排過序的。shuffle 將map輸出結果送到reducer和排序的功能。1 map 每個map task將結果輸出到環形記憶體緩衝區,當到達一定閾值,則啟動乙個後台程序將快取中的資料 1 按照 red...

九 hadoop mapreduce分割槽

一 什麼時候分割槽?1 分割槽的實現 通過繼承partitioner類,實現getpartition方法。public int getpartition key key,value value,int reducetasknumber map結束後得到的每個key value都呼叫該方法,並把key...

Hadoop Mapreduce執行流程

整個 hadoop mapreduce 的作業執行流程如圖所示 客戶端向 jobtracker 提交作業。首先,使用者需要將所有應該配置的引數根據需求配置好。作業提交之後,就會進入自動化執行。在這個過程中,使用者只能監控程式的執 況和強制中斷作業,但是不能對作業的執行過程進行任何干預。提交作業的基本...