apache-kafka - 重新部署后,kafka 流抱怨内部主题的分区无效。为什么会这样?
问题描述
我有一个简单的拓扑结构,可以对某个主题进行一些窗口化。我没有对拓扑进行任何更改,也没有在任何内部主题上设置分区大小。
我唯一改变的是流线程的数量(NUM_STREAM_THREADS_CONFIG
)从 10 到 50。将它设置回 10 并不能解决这个问题。
2021-10-07 22:48:24.452 ERROR : o.a.k.s.p.i.InternalTopicManager: stream-thread [main]
Existing internal topic my-app-KTABLE-SUPPRESS-STATE-STORE-0000000015-changelog
has invalid partitions: expected: 10 ; actual: 1.
Use 'kafka.tools.StreamsResetter' tool to clean up invalid topics before processing.
从以前的答案看来,解决这个问题的方法是重置整个应用程序的流(从一开始就导致重新处理)。这并不理想。我可能会尝试删除与此应用程序相关的所有主题并重新开始。
我的问题 - 我想了解为什么会这样。这似乎是一个非常严重的错误,没有任何明显的原因。
解决方案
我也没有在任何内部主题上设置分区大小
这就是你收到错误的原因。增加线程需要更高的分区数,因为您不能拥有consumer threads * instances
超过总分区数。默认只有一个分区。
您也不能减少主题分区计数,除非删除主题并重新创建它,这就是 reset 命令的作用;它不会删除其中仍有数据的“用户主题”,只会重置组 ID 并删除内部主题
您无需重置应用程序,因为您可以使用kafka-topics
CLIkafka-reassign-partitions
工具手动添加分区
推荐阅读
- php - 如何从 WordPress 中的另一个数据库获取帖子元数据
- django - 模板中循环的django总和值
- python - Python:按第二个列表的元素对第一个列表的元素进行排序
- javascript - Mongodb 3+版本:如何仅在不存在的情况下插入新文档并获取结果
- javascript - 如何在本机反应中使任何子组件模糊?
- java - 通知播放默认声音而不是安装
- android - 无法更新安卓工作室
- typescript - 在 Typescript 中创建 fetch 包装器
- python - Keras中的“trainable_weights”是什么意思?
- regex - Visual Studio 多行替换,同时在查找时忽略前导空格,但在替换时包括它们