Mapreduce和yarn-內存設置

hadoop2.5,kylin2.1,ambarijava

在使用kylin的cube作build數據時,運行mapreduce的job,總會報jvm內存溢出。node

因而就想到優化配置參數,查了不少資料,最後總結了一下。jvm

1.Yarn裏只有一個RM(ResourceManager)做爲集羣管理和統一資源管理和調度oop

AM(ApplicationMaster):負責應用程序管理優化

NM(NodeManager):負責單節點資源管理ui

Scheduler:負責集羣調度設計

Container:對(節點,內存,CPU)等進行資源抽象內存

以上:hadoop

設計到內存配置資源

    yarn:

            yarn.nodemanager.resource.memory.mb
            yarn.scheduler.minimum-allocation-mb
            yarn.scheduler.maximum-allocation-mb

  mapreduce:

            mapreduce.map.memory.mb
            mapreduce.reduce.memory.mb
            mapreduce.reduce.java.opts
            mapreduce.map.java.opts
            mapreduce.task.io.sort.mb

在配置上:例如 經過 free -g 查看內存:20g

            yarn.nodemanager.resource.memory.mb=16g
            yarn.scheduler.minimum-allocation-mb=1g
            yarn.scheduler.maximum-allocation-mb=16g     

            yarn.nodemanager.resource.memory.mb和 yarn.scheduler.maximum-allocation-mb內存要同樣,而且留4g內存給系統

            mapreduce.map.memory.mb=6g
            mapreduce.reduce.memory.mb=12g
            mapreduce.reduce.java.opts=6g
            mapreduce.map.java.opts=3g
            mapreduce.task.io.sort.mb=2g

        mapreduce.reduce.memory.mb要小於yarn.scheduler.maximum-allocation-mb(最好在80%),要大於yarn.scheduler.minimum-allocation-mb

             mapreduce.map.memory.mb要是mapreduce.reduce.memory.mb的一半

             mapreduce.reduce.java.opts要是mapreduce.reduce.memory.mb的一半

             mapreduce.map.java.opts要是mapreduce.map.memory.mb的一半

             mapreduce.task.io.sort.mb通常不要超過JVM

JVM重用:

        加入以上參數

        mapreduce.job.ubertask.enable

        mapreduce.job.ubertask.maxmaps

        mapreduce.job.ubertask.maxreduces

相關文章
相關標籤/搜索