重新启动群集时,连接使用者作业将被删除

dgenwo3n  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(319)

我面临着以下的问题,改变一些有关Kafka的属性和重新启动集群。

In kafka Consumer, there were 5 consumer jobs are running .

如果我们进行一些重要的属性更改,并且在重新启动集群时,一些/所有现有的使用者作业都无法启动。

Ideally all the consumer jobs should start ,

因为它将从以下系统主题获取元数据信息。

config.storage.topic
offset.storage.topic
status.storage.topic
vd2z7a6w

vd2z7a6w1#

首先,一点背景知识。kafka将其所有数据存储在topics中,但是那些topics(或者更确切地说是组成topic的分区)是只附加的日志,除非做些什么,否则这些日志将永远增长。为了防止这种情况,Kafka有两种能力来清理主题:保留和压缩。配置为使用保留的主题将保留数据一段可配置的时间:代理可以自由删除任何早于此的日志消息。配置为使用压缩的主题要求每条消息都有一个密钥,并且代理将始终为每个不同的密钥保留最后一条已知的消息。当每条消息(即,键/值对)表示密钥的最后一个已知状态时,压缩非常方便;由于消费者阅读该主题是为了获取每个键的最后一个已知状态,因此如果删除较旧的状态,他们最终会更快地到达最后一个状态。
代理将对主题使用哪个清理策略取决于以下几点。默认情况下,隐式或显式创建的每个主题都将使用保留,不过您可以更改以下几种方式:
全局更改 log.cleanup.policy 代理设置,只影响在该点之后创建的主题;或
指定 cleanup.policy 创建或修改主题时的特定于主题的设置
现在,kafka connect使用几个内部主题来存储连接器配置、偏移和状态信息。这些内部主题必须是压缩主题,以便(至少)每个连接器的最后配置、偏移和状态始终可用。由于kafka connect从不使用较旧的配置、偏移量和状态,因此代理将它们从内部主题中删除实际上是一件好事。
在kafka 0.11.0.0之前,建议使用正确的主题特定设置手动创建这些内部主题。您可以依赖代理来自动创建它们,但这是有问题的,有几个原因,其中最重要的一个原因是三个内部主题应该有不同数量的分区。
如果没有压缩这些内部主题,则配置、偏移量和状态信息将在保留期过后被清理和删除。默认情况下,此保留期为24小时!这意味着,如果在部署/更新连接器配置超过24小时后重新启动kafka connect,则该连接器的配置可能已被清除,并且将显示为连接器配置从未存在。
因此,如果没有正确创建这些内部主题,只需使用主题管理工具来更新文档中描述的主题设置。
顺便说一句,不正确地创建这些内部主题是一个非常常见的问题,以至于kafka connect 0.11.0.0能够使用正确的设置自动创建这些内部主题,而不依赖于代理自动创建主题。
在0.11.0中,对于源连接器写入的主题,仍然必须依赖于手动创建或代理自动创建。这并不理想,因此有人建议更改kafka connect以自动创建源连接器的主题,同时让源连接器控制设置。希望这个改进能使它变成0.11.1.0,这样Kafka连接就更容易使用了。

相关问题