1) 在yarn界面查看以下两个参数,分别是CPU 和内存
| 参数 | 含义 |
|---|---|
| yarn.nodemanager.resource.cpu-vcores | 每台机器配多少cpu |
| yarn.nodemanager.resource.memory-mb | 每台机器配多少内存 |
yarn跑mapreduce,spark任务,如sqoop,合并ORC版本等。也就是sqoop向yarn要cpu和内存。
2) 在inceptor上查看以下三个参数
| 参数 | 含义 |
|---|---|
| executor.number.eachnode | 每台机器上配几个executor |
| inceptor.executor.cores | 每个executor有几个核 |
| inceptor.executor.memory | 每个executor有多少内存 |
所以每台分配的cpu总数是:executor.number.eachnode * inceptor.executor.cores
每台分配的总内存是:executor.number.eachnode * inceptor.executor.memory
一个executor最多一般10个核,如果有18个核,可以配两个executor,每个9核。
executor内存一般是核数量的2~4倍(单位G),比如每个executor有5个核,内存就给10~20G。
inceptor是跑sql任务的,也就是所有sql向inceptor要cpu和内存。
每个节点分配的总cpu是yarn+inceptor,也就是
yarn.nodemanager.resource.cpu - vcores + executor.number.eachnode*inceptor.executor.cores
每个节点分配的总内存是yarn + inceptor,也就是
yarn.nodemanager.resource.memory - mb+executor.number.eachnode * inceptor.executor.memory
每台机器总cpu分配最好不要超过实核,注意不是虚核,一般机器开了超线程,虚核是实核两倍。
每台机器inceptor的核数一定不能超过实核。
每台机器总内存分配最好不要超过50%,根据实际情况,可以适当调大些。
比如机器实核32,inceptor分了24(三个executor,每个8核),inceptor一定不能超实核。剩下还有8个核,可以全部分给yarn,yarn最好不要超过8核,如果超了8核,inceptor和yarn总共就超了实核32。yarn如果实在不够,可以多给点,但不要超过剩下核的两倍。也就是yarn可分的核在8~16。
如果安装了stream,还要加上stream的cpu和内存,stream参数和inceptor一样。