优化
优化
资源配置调优
bin/flink run \
-t yarn-per-job \
-d \
-p 5 \ 指定并行度
-Dyarn.application.queue=test \ 指定 yarn 队列
-Djobmanager.memory.process.size=1024mb \ 指定 JM 的总进程大小 2-4G
-Dtaskmanager.memory.process.size=1024mb \ 指定每个 TM 的总进程大小 2-8G
-Dtaskmanager.numberOfTaskSlots=2 \ 指定每个 TM 的 slot 数 1core 1slot或者1core 2slot
-c com.atguigu.app.dwd.LogBaseApp \
/opt/module/gmall-flink/gmall-realtime-1.0-SNAPSHOT-jar-with-dependencies.jar
Source 端并行度的配置
数据源端是 Kafka,Source 的并行度设置为 Kafka 对应 Topic 的分区数
。Flink 的一个并行度可以处理一至多个分区的数据,如果并行度多于 Kafka 的分区数,那么就会造成有的并行度空闲,浪费资源。
Transform 端并行度的配置
Keyby 之前的算子
一般不会做太重的操作,都是比如 map、filter、flatmap 等处理较快的算子,并行度可以和 source 保持一致。
Keyby 之后的算子
如果并发较大,建议设置并行度为 2 的整数次幂,例如:128、256、512; 小并发任务的并行度不一定需要设置成 2 的整数次幂; 大并发任务如果没有 KeyBy,并行度也无需设置为 2 的整数次幂;
Sink 端并行度的配置
Sink 端是数据流向下游的地方,可以根据 Sink 端的数据量
及下游的服务抗压能力
进行评估。
如果 Sink 端是 Kafka,可以设为 Kafka 对应 Topic 的分区数。