flink单task多slot调优
1. 单taskmanager多slot的设置方法
方式一:在配置文件中配置taskmanager.numberOfTaskSlots,通过修改提交任务的客户端配置文件中的配置flink-conf.yaml配置,如下图:将该值设置为需要调整的数值即可
方式二:启动命令的过程中使用-ys命令传入,例如:以下命令
./flink run -m yarn-cluster -p 1 -ys 3 ../examples/streaming/WindowJoin.jar
在启动后在一个taskmanager中会启动3个slot。
2. 单taskmanager多slot需要优化哪些参数
参数名称 | 默认值 | 意义与调整建议 |
yarn.containers.vcores | 1 | 每个taskmanager(也就是container)内部需要启动使用的vcore得到数量 配置建议:与配置的slot数量相同一致 |
taskmanager.network.netty.server.numThreads | 1(如果配置为-1,则默认跟slot数量保持一致) | Taskmanager作为服务端,并行线程数通道数量 配置建议:与配置的slot数量相同一致 |
taskmanager.network.netty.client.numThreads | 1(如果配置为-1,则默认跟slot数量保持一致) | Taskmanager作为客户端,并行线程数通道数量 配置建议:与配置的slot数量相同一致 |
taskmanager.network.netty.num-arenas | 1(如果配置为-1,则默认跟slot数量保持一致) | Netty域的数量 配置建议:与配置的slot数量相同一致 |
taskmanager.network.memory.max | 1G | Netty使用的缓存数量的最大值,通常情况下随着slot数量增加,netty线程数量增加,那么缓存数据的量会越来越多此时需要增加这个缓存的数量。 配置建议:2G以上,如果 |
增加taskmanager的启动内存,即-yjm | 跟slot数量保持一致 | 一个taskmanager在启动后,如果设置了多个slot,每个slot会均分启动内存 |