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

相关文章
相关标签/搜索