小猿圈之Hadoop優化

Hadoop框架是如今最主流的的框架之一,愈來愈多的人去學習,那麼你對hadoop的理解是什麼?hadoop必定要會優化,那怎麼優化呢,小猿圈今天說一下,感興趣的朋友能夠看看小猿圈寫的這篇文章。bash

一、mr程序的效率瓶頸網絡

功能:分佈式離線計算框架

計算機性能:CPU、內存、磁盤、網絡分佈式

I/O操做優化aoop

(1)數據傾斜(代碼優化)性能

(2)map和reduce數設置不合理學習

(3)map運行時間太長,致使reduce等待太久優化

(4)小文件過多(combineTextInputFomrat小文件合併)spa

(5)不可分塊的超大文件(不斷的溢寫)code

(6)多個溢寫小文件須要屢次merge

二、mr優化方法

六個方面考慮:數據輸入、Map階段、Reduce階段、IO傳輸、

數據傾斜、參數調優

1­>數據輸入

(1)合併小文件:在執行mr任務前就進行小文件合併

(2)採用CombineTextInputFormat來做爲輸入,解決輸 入端大量小文件的場景

mr並不適合處理大量小文件

2­>Map階段

(1)減小溢寫次數(增長內存200M 80%)

<property>
            <name>mapreduce.task.io.sort.mb</name>
            <value>100</value>
        </property>
        <property>
            <name>mapreduce.map.sort.spill.percent</name>
            <value>0.80</value>
        </property>
複製代碼

(2)減小合併次數

<property>
            <name>mapreduce.task.io.sort.factor</name>
            <value>10</value>
        </property>
複製代碼

(3)在map以後,不影響業務邏輯狀況下進行combiner

3­>Reduce階段

(1)合理設置map與reduce個數

(2)設置map/reduce共存

設置運行必定程度的map運行後 啓動reduce減小等待時間

<property>
            <name>mapreduce.job.reduce.slowstart.completedmaps</name>
            <value>0.05</value>
        </property>
複製代碼

(3)合理設置reduce端的buffer

<property>
            <name>mapreduce.reduce.markreset.buffer.percent</name>
            <value>0.0</value>
        </property>
複製代碼

4­>傳輸

(1)進行數據壓縮

(2)使用sequenceFile

5­>數據傾斜

(1)進行範圍分區

(2)自定義分區

(3)Combine

(4)能用mapjoin堅定不用reduce join

6­>參數調優

設置核心數

map核心數設置:

<property>
            <name>mapreduce.map.cpu.vcores</name>
            <value>1</value>
        </property>
複製代碼

reduce核心數設置:

<property>
            <name>mapreduce.reduce.cpu.vcores</name>
            <value>1</value>
        </property>
複製代碼

設置內存

maptask內存設置:

<property>
            <name>mapreduce.map.memory.mb</name>
            <value>1024</value>
        </property>
複製代碼

reducetask內存設置:

<property>
            <name>mapreduce.reduce.memory.mb</name>
            <value>1024</value>
        </property>
複製代碼

reduce去map端拿數據並行度

<property>
            <name>mapreduce.reduce.shuffle.parallelcopies</name>
            <value>5</value>
        </property>
複製代碼

hadoop優化小猿圈說了幾個優化的方面,你們感受怎麼樣?若是有其餘方面的優化方法,能夠給小猿圈補充,感受還不錯的話,能夠去小猿圈學習其餘方面內容,但願你們會學到更多全面的內容。

相關文章
相關標籤/搜索