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
来源:oschina
链接:https://my.oschina.net/u/1046672/blog/1559105