Mapreduce和yarn-内存设置

本秂侑毒 提交于 2020-02-28 17:29:00

hadoop2.5,kylin2.1,ambari

在使用kylin的cube做build数据时,运行mapreduce的job,总会报jvm内存溢出。

于是就想到优化配置参数,查了很多资料,最后总结了一下。

1.Yarn里只有一个RM(ResourceManager)作为集群管理和统一资源管理和调度

AM(ApplicationMaster):负责应用程序管理

NM(NodeManager):负责单节点资源管理

Scheduler:负责集群调度

Container:对(节点,内存,CPU)等进行资源抽象

以上:

设计到内存配置

    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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!