目录
Keyby 之后的算子 (KeyGroup 最小值为128)
资源配置优化
Flink 性能调优的第一步,就是为任务分配合适的资源,在一定范围内,增加资源的分配与性能的提升是成正比的,实现了最优的资源配置后,在此基础上再考虑进行后面论述的心更难调优策略。
提交方式主要 yarn-per-job ,资源的分配在使用脚本提交 Flink 任务时进行指定。
内存设置 (1CPU 配置 4G 内存)
生产资源配置:
bin/flink run \
-t yarn-per-job \
-d \
-p 5 \ 指定并行度
-Dyarn.application.queue=test \ 指定 yarn 队列
-Djobmanager.memory.process.size=2048mb \ JM2~4G足够
-Dtaskmanager.memory.process.size=6144mb \ 单个TM2~8G足够
-Dtaskmanager.numberOfTaskSlots=2 \ 与容器核数 1 core:1 slot或1 core:2 slot
-c com.xxxx.classApp
/opt/..../ jar
Flink 是实时流处理,关键在于资源情况能不能抗住高峰时期每秒的数据量,通常用QPS/TPS来描述数据情况。
并行度设置
最优并行度计算
开发完成后,先进行压测,任务并行度给 10 以下,测试单个并行度的处理上限。然后 总 QPS / 单并行度的处理能力 = 并行度
不能只从 QPS 去得出并行度,因为有些字段少、逻辑简单的任务,单并行度一秒处理几万条数据。而有些数据字段多,处理逻辑复杂,单并行度一秒只能处理 1000 条数据。
最好根据高峰期的 QPS 压测, 并行度*1.2倍,富余一些资源。
Source 端并行度的配置
数据源端是 Kafka, Source 的并行度设置为 Kafka 对应 Topic 的分区数
如果已经等于 Kafka 的分区数,消费速度仍跟不上数据生产速度,考虑下