1 .MapReduce 跑的慢的原因
1.1主要有兩點:
-
計算機性能
CPU、內存、磁盤、網絡 -
IO 操作優化
- 數據傾斜
2)Map 和 Reduce 數目設置不合理
3)Map 時間過長,導致 Reduce 等待太久
4)小文件過多
5)大量的不可分塊的超大文件
6)spill(溢寫)次數過多
7)Merge 次數過多
1.2 MapReduce 優化方法
- 主要從六個方面考慮:數據輸入,Map 階段、Reduce 階段、IO傳輸階段、數據傾斜問題和參數調優。
1.2.1 數據輸入
(1)合併小文件:在執行MR 任務前將小文件進行合併,大量的小文件會產生大量的map 任務,增大 map 任務裝載次數,而任務的裝在比較耗時,從而導致 mr 運行很慢。
合併小文件的方法:
(1)在數據採集的時候,就將小文件或小批數據合成大文件再上傳HDFS。
(2)在業務處理之前,在HDFS上使用MapReduce程序對小文件進行合併。
(3)在MapReduce處理時,可採用CombineTextInputFormat提高效率。
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200629221505801.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIzNjA5NjAz,size_10,color_FFFFFF,t_50
)
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200629221555685.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIzNjA5NjAz,size_16,color_FFFFFF,t_70 )
1.2.2 map階段
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200629221751287.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIzNjA5NjAz,size_16,color_FFFFFF,t_70 )
1.2.3 Reduce 階段
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200629221914746.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIzNjA5NjAz,size_16,color_FFFFFF,t_70 )
1.2.4 I/O傳輸
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200629222055387.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIzNjA5NjAz,size_16,color_FFFFFF,t_70 )
1.2.5 數據傾斜問題
(1)數據傾斜現象
數據頻率傾斜: 某一個區域的數據量遠遠大於其他區域。
數據大小傾斜:部分記錄的大小遠遠大於平均值。
(2)減少數據傾斜的方法
方法 1:抽樣和範圍分區
對原始數據進行抽樣得到結果集,預設分區邊界。
方法2 :自定義分區
![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200629222430705.png )![在這裏插入圖片描述](https://img-blog.csdnimg.cn/20200629222449789.png )
方法 4 : Mapjoin,避免 Reduce join.
1.2.6 參數調優
![(1)](https://img-blog.csdnimg.cn/20200629222628210.png )