小猿圈之Hadoop優化

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

一、mr程序的效率瓶頸框架

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

    計算機性能:CPU、內存、磁盤、網絡oop

    I/O操做優化a性能

    (1)數據傾斜(代碼優化)學習

    (2)map和reduce數設置不合理優化

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

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

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

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

相關文章
相關標籤/搜索