Tidb同步数据到kafka后,通过streaming structured接受数据报错messages larger than fetch size

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:tidb 版本2.15,kafka版本0.10
  • 【问题描述】:
    tidb同步数据到kafka后,通过streaming structured接受数据报错。每次清空kafka的checkpoint后就好了,应该是数据堆积太多,但是我调整kafka参数、调整streaming structured接收端均无用,是否跟tispark或者binlog有关?
    出现场景通常为spark应用长时间未开启后重启、或重新同步tidb表时load发生。

具体信息如下:

 org.apache.kafka.common.errors.RecordTooLargeException: There are some messages at [Partition=Offset]: {kafka_obinlog-0=621412} whose size is larger than the fetch size 1048576 and hence cannot be ever returned. Increase the fetch size on the client (using max.partition.fetch.bytes), or decrease the maximum message size the broker will allow (using message.max.bytes).

调整的是max.partition.fetch.bytes和message.max.bytes这两个参数吗 分别从多少调整到了多少

调整完全没用,提示中的大小没有变,我试过10485760,104857600都不行

 whose size is larger than the fetch size 1048576

是客户端调整的吧,binlog的driver可以设置吗?怎么设置?

数据流向是怎么样的? 数据通过 TiDB Binlog 从 TiDB 同步到 Kafka,然后使用streaming structured 从 Kafka 中消费吗,在消费 Kafka 的过程中报错了

是的,

Topic Partition LogSize Leader Replicas Isr
kafka_obinlog 0 70559 2 [2] [2]

从这样的链路看,message.max.bytes 这个应该修改 Kafka 的配置文件

修改哪个文件?我根据网上资料修改过kafka的配置文件,没有用

就是 kafka 的配置文件,可以尝试修改以下几个参数,看能否解决问题

message.max.bytes=1073741824

replica.fetch.max.bytes=1073741824

fetch.message.max.bytes=1073741824

kafka有几个配置文件,我修改过,没用效果,提示信息里一直都是1048576
修改如下:

producer.properties:
    max.request.size=10485760
consumer.properties:
    fetch.message.max.bytes=10485760
server.properties:
    message.max.bytes=10485760
    replica.fetch.max.bytes=10485760

可以参考一下这个链接:

https://github.com/bjkonglu/resume-bjkonglu/issues/11

还是不行

能提供一下 Kafka 的配置文件以及 SS 的配置文件么

ss没有配置文件,直接部署的tidb的时候自动部署tispark的配置文件,使用ss只是开发时候引用的包不一样了

consumer.properties (1.2 KB) producer.properties (1.9 KB) server.properties (5.7 KB)

server.properties 中的message.max.bytes 应该改小,改小于 1048576 这个值

1 个赞

等于不行吗?我试试该小

可以了,谢谢

:+1::+1::+1: