我对Kafka还不熟悉,正准备用它来制作。
如果主题当前分区的代理磁盘空间不足,或者可以向集群添加更多代理,那么可以使用哪些策略来重新平衡数据存储?
通过一个简单的例子,假设一个主题在开始时有3个分区(1个副本以简化问题),3个代理每个存储该主题的1个分区,每个分区占用1tb的磁盘空间。
我如何再添加3个新的代理服务器,并将topic的分区数量更改为6,最终得到6个分区中的每个分区都占用其代理上500gb磁盘空间的数据重新平衡结果?
我认为这个问题对于在kafka集群中永久存储大量数据至关重要。
谢谢。
2条答案
按热度按时间eanckbw91#
另外,请记住,创建主题后,将定义复制副本和ISR。在可能的情况下,为恢复力和耐久性选择一个复制因子3。在3节点集群中,复制因子为2在某些棘手的情况下是没有帮助的,在这种情况下,如果一个(3个)代理宕机,那么所有可用的或在线的代理都不会加入副本集(以满足复制因子)并进入isr。在这样的情况下,您将最终得到一个不完整的isr,更糟糕的是,最终会出现单点故障。
注意,如果与扩展或收缩kafka集群不同,broker正在关闭。
eqoofvh92#
kafka-reassign-partitions
&kafka-preferred-replica-election
是处理此类重定位任务的内置命令,因为kafka不会在集群扩展时自动执行它。有供应商提供的替代品,例如来自confluent和datadog。
如何再添加3个新的代理服务器
请参阅文档-扩展群集
将主题的分区数改为6
使用
kafka-topics --alter
并增加分区(注意:这不会将现有数据重新定位到新分区,或者换句话说“重新设置”主题)