7
回答
关于kafka创建topic后partition的奇怪问题,求大神

有一些数据需要在在Java中调用API发送到指定的topic中的指定partition中,报出如下错误:

错误说我的partition超出了最大的partition数量.可以确定partition的数量是我创建的为50个,奇怪的是在kafka中查询partition数量的时候,有时候查询出3个有时候查询出50个,如图

并且第一个报错也是,有时是可以将数据放进去的如图:

有一些partition成功的将数据放进去了.

看了报错地方的源码就是在获取topic的partition总数时没准确才会在程序中报出这个问题,和使用命令查询partition出现的情况相对应.

 

求大神指点!!!十分感谢

<无标签>
举报
行走的面巾纸
发帖于3个月前 7回/279阅

查看下zk状态是否正常

查看下kafka服务日志中是否异常报出

--- 共有 1 条评论 ---
行走的面巾纸大概知道怎么回事了.因为这个环境是3个kafka的小集群,创建topic的时候,复制因子指定的是1,三个节点的信息没有同步,每次去查询数据的时候是随机去一个节点上面去查询的,所以导致如果在对应的节点是对的,不然就查不到 2个月前 回复

MetadataRequest是根据客户端的inflightRequests来挑选负载最低的Broker节点来请求的,通俗点的说法相当你说的随机。每个Broker节点都有一块内存MetadataCache来缓存元数据信息,你这里的集群中的Broker节点的元数据是没有同步。元数据同步的工作是由Kafka Controller来发送UpdataMetaRequest来维护的,元数据的同步是内部自动运转的,为什么没有同步,这个要你捞出服务端日志来check的

引用来自“朱小厮S”的评论

MetadataRequest是根据客户端的inflightRequests来挑选负载最低的Broker节点来请求的,通俗点的说法相当你说的随机。每个Broker节点都有一块内存MetadataCache来缓存元数据信息,你这里的集群中的Broker节点的元数据是没有同步。元数据同步的工作是由Kafka Controller来发送UpdataMetaRequest来维护的,元数据的同步是内部自动运转的,为什么没有同步,这个要你捞出服务端日志来check的

报错就是说超过了可检测节点,但是我理解上这三个的ID不同了,那就可以了呀.还是说它是通过什么机制来进行感知的,而我缺少了这个配置.导致他三个节点间的通信受到影响只感知到了一个

不是可检测节点 是可用节点。。说明你整个集群的可用节点为1.

所以你不能创建超过1的副本

--- 共有 1 条评论 ---
行走的面巾纸搞定了已经,是启动脚本有问题,用一个ZK节点起的kafka,感谢 2个月前 回复
顶部