flink读取kafka数据写入clickhouse很慢

背景:通过flink程序消费kafka数据,然后数据经过flink-cdc读进来的维度数据做成状态数据,然后进行匹配,补齐字段后写入到clickhouse大宽表。

提交资源为:-yjm 8192m -ytm 16384m   -ys 5 -p 10 ,其中kafka source的并行度设置的跟kafka的分区数一致为3个并行度

flink作业处理流程:

 

出现的现象:发现clickhouse的数据写入特别慢,使用kafka客户端命令查看kafka消费者组的数据偏移量情况

kafka-consumer-groups --bootstrap-server xxx:9092 --group first_group --describe
TOPIC             PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID     HOST            CLIENT-ID
first_topic       0          185710          1721891         1536181         -               -               -
first_topic       2          1721901         1721901         0               -               -               -
first_topic       1          1721898         1721898         0               -               -               -

发现 first_topic 主题 中的0号分区出现大量挤压(LAG指标就是挤压数据量)

然后查看flink web作业界面,发现在kafka Source和Filter算子处出现反压,BackPressure 指标显示大部分subTask 都 为 1 - High,在 Co-Process-Broadcast 处是正常的,那么原因就定位到了,是因为 Co-Process-Broadcast 处的操作引起的;

 

 

解决方案

1、禁用掉作业链 ,重新打包作业,观察是哪个算子引起的反压;

2、在 Co-Process-Broadcast 处的是 

BroadcastProcessFunction 函数的调用,里面是针对业务逻辑的处理,在处理的时候因为要读取一个外部资源文件(ip地域库),之前的逻辑是每来一条数据都要读一次资源文件,发现问题后修改为读取一次,然后重新提交作业后,flink反压问题解决了,kakfa的数据挤压也就解决了。

总结:

flink的大部分反压原因是因为业务代码导致的,所以要仔细考虑业务代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值