有一些数据需要在在Java中调用API发送到指定的topic中的指定partition中,报出如下错误:
错误说我的partition超出了最大的partition数量.可以确定partition的数量是我创建的为50个,奇怪的是在kafka中查询partition数量的时候,有时候查询出3个有时候查询出50个,如图
并且第一个报错也是,有时是可以将数据放进去的如图:
有一些partition成功的将数据放进去了.
看了报错地方的源码就是在获取topic的partition总数时没准确才会在程序中报出这个问题,和使用命令查询partition出现的情况相对应.
求大神指点!!!十分感谢
<p>查看下zk状态是否正常</p>
查看下kafka服务日志中是否异常报出
大概知道怎么回事了.因为这个环境是3个kafka的小集群,创建topic的时候,复制因子指定的是1,三个节点的信息没有同步,每次去查询数据的时候是随机去一个节点上面去查询的,所以导致如果在对应的节点是对的,不然就查不到
<p>还需要什么错误信息留言.秒回!!!!!</p>
<p><img height="399" src="https://static.oschina.net/uploads/space/2018/0711/161742_hjja_3614717.png" width="1038"></p>
程序出错原因
<p><img height="489" src="https://static.oschina.net/uploads/space/2018/0711/163900_xTeV_3614717.png" width="1330"></p>
经常就会报出超出partition总数的错误,但是有一些数据也是能放进去的
<p>MetadataRequest是根据客户端的inflightRequests来挑选负载最低的Broker节点来请求的,通俗点的说法相当你说的随机。每个Broker节点都有一块内存MetadataCache来缓存元数据信息,你这里的集群中的Broker节点的元数据是没有同步。元数据同步的工作是由Kafka Controller来发送UpdataMetaRequest来维护的,元数据的同步是内部自动运转的,为什么没有同步,这个要你捞出服务端日志来check的</p>
<div class='ref'><h4>引用来自“朱小厮S”的评论</h4><p>MetadataRequest是根据客户端的inflightRequests来挑选负载最低的Broker节点来请求的,通俗点的说法相当你说的随机。每个Broker节点都有一块内存MetadataCache来缓存元数据信息,你这里的集群中的Broker节点的元数据是没有同步。元数据同步的工作是由Kafka Controller来发送UpdataMetaRequest来维护的,元数据的同步是内部自动运转的,为什么没有同步,这个要你捞出服务端日志来check的</p>
<p>不是可检测节点 是可用节点。。说明你整个集群的可用节点为1.</p>
所以你不能创建超过1的副本
搞定了已经,是启动脚本有问题,用一个ZK节点起的kafka,感谢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。