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