记一次Flinkcdc调参
场景描述:
利用Flinkcdc从mysql中抓取数据到kafka,再写到doris数据库里
mysql表结构如下:
1 |
|
其中aspect_values
longtext,字段超大,估计塞了一篇网文还持续连载的那种🤮
1 |
|
可以看到整张表占6.04GB, 其中aspect_values大字段就占5.8G,最大的字段长度是800+K
Debug过程
flinkcdc任务提交在yarn集群上,没有看到任何报错信息(可能本身写的代码输出信息比较少),以至于在taskmanager上没看到任何报错信息,但是kafka的topic就是不生成。
尝试将source来的data打印print出来,这时候发现报错信息了
1.首先找到yarn上刚提交的applicationid
2.找到对应的applicationid后点击进去,可以追踪到ApplicationMaster
Tracking URL: | [ApplicationMaster] |
---|
3.点击对应的ApplicationMaster进来后的界面
4.查看日志输出,发现是GC overhead limit exceeded,也就是超出了taskmanager的指定内存了
5.尝试将ytm参数,也就是在提交运行flink任务的时候的taskmanager的内存提高到8G -ytm 2048
发现可以正常生成kafka topic,至此mysql -> kafka这一层可以正常work
6.在kafka sink到doris这一环节中
由于配置的dorisBatchSize: 5000,报JVM heap内存溢出,暂时将其调整为dorisBatchSize: 2000,报错消失。
后续可以尝试调整参数:
1 |
|
个人理解下来是减小每次拉取的数量,这是在内存不足的情况下可以尝试减小fetch size,chunk size的大小数量。但是我这内存充足就没进行相应的调优
参考官网:https://ververica.github.io/flink-cdc-connectors/master/content/connectors/mysql-cdc.html#
还可以调整并行度和slot数量观察数据抽取速度
觉得不错的话,支持一根棒棒糖吧 ୧(๑•̀⌄•́๑)૭
wechat pay
alipay