MR優化總結

2021-09-02 22:56:00 字數 1251 閱讀 6642

優化前

1.熟知業務要求

2.熟知資料分布狀態(是否傾斜、是否是多個小檔案等),可以使用取樣來了解資料

通用型優化策略

1.檔案儲存格式

使用更加優化的格式的檔案,例如parquet、orc,綜合來說,orc最優。

2.檔案壓縮

可以在mr各階段啟用壓縮,例如:資料塊可以被壓縮(reduce輸出可以被壓縮)、map輸出資料可以被壓縮(減少shuffle過程中傳輸的資料量)

3.shuffle優化

核心思想:減少磁碟io。可以通過調節一下幾個方面來達到效果:

1.增加環形緩衝區大小

2.增大merge過程一次可以合併的溢寫檔案的數量(注意:量力(記憶體)而行)

3.增大溢寫的第一級門檻

4.在能使用combiner的業務場景下,盡可能的使用combiner

5.合理設定combiner的閾值

6.map輸出的k、v盡量小

專用型優化策略

減少不必要的消耗

1.使用更加優化的資料格式檔案,例如orc

2.map端join(省去shuffle過程)

3.countall 或 topn場景下合理使用cleanup方法(減少shuffle過程中的資料傳輸量)

4.排序操作盡量使用shuffle內建的排序機制而不要自己手動排序

合理進行任務分配

資料本身不均衡

資料傾斜

通過自定義業務k,均分分散傾斜的資料,要實現同等效果還可以自定義partitioner

大量小檔案

1.當mr程式的輸入是一堆小檔案時,可以先將小檔案合併,然後在再進行處理

2.使用uber模式

資料本身均衡

1.合理設定reducetask的數量,假定map總輸出的鍵值對的大小是10gb(並且去重後的key的數量遠大於reducetask的數量),而乙個reducetask所用的continer的記憶體為1gb,那麼合理的reducetask的數量為10÷(1*0.7)≈15(這裡需要採用進1法);

2.為具體的任務設定合適的continer大小,無論是maptask還是reducetask,只要是cpu密集型的,其所使用的continer就應該由較多的cpu和合適的記憶體所組成。同樣的,如果任務是io密集型的,其所使用的continer就應該改由合適的cpu和較大的記憶體所組成。這個一般不全域性調節。

優化最佳實踐

mr資料傾斜優化

資料傾斜是資料中的常見情況。資料中不可避免地會出現離群值 outlier 並導致資料傾斜。這些離群值會顯著地拖慢mapreduce的執行。常見的資料傾斜有以下幾類 資料頻率傾斜 某乙個區域的資料量要遠遠大於其他區域。資料大小傾斜 部分記錄的大小遠遠大於平均值。在map端和reduce端都有可能發生資...

MR核心程式設計思想總結

先分後合思想,mr程式分為map和ruduce兩個階段,map階段負責將海量資料分類形成kv鍵值對,reduce階段負責將map階段形成的kv鍵值對分組合併。1 首先待計算的資料在client端生成切片 邏輯上對資料進行劃分 生成的切片個數對應著要啟動多少個maptask程式進行map階段的計算.2...

MR架構 MR工作流程

一 mr的架構 1 簡介 mapreduce 是乙個軟體框架,基於該框架能夠容易地編寫應用程式,這些應用程式能夠執行在由上千個商用機器組成的大集群上,並以一種可靠的,具有容錯能力的方式並行地處理上 tb級別的海量資料集 2 4個物件 客戶端 編寫mapreduce 程式,配置作業,提交作業,這就是程...