Sou*_*jee 1 apache-kafka apache-kafka-connect
关于更改与kafka相关的一些属性并重新启动集群,我面临以下问题.
In kafka Consumer, there were 5 consumer jobs are running .
Run Code Online (Sandbox Code Playgroud)
如果我们进行了一些重要的属性更改,并且在重新启动集群时,部分/全部现有的使用者作业无法启动.
Ideally all the consumer jobs should start ,
Run Code Online (Sandbox Code Playgroud)
因为它将从以下系统主题获取元数据信息.
config.storage.topic
offset.storage.topic
status.storage.topic
Run Code Online (Sandbox Code Playgroud)
首先,有点背景.Kafka将其所有数据存储在主题中,但这些主题(或者更确切地说是构成主题的分区)是仅附加日志,除非完成某些操作,否则这些日志将永远增长.为了防止这种情况,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 Connect更易于使用.
| 归档时间: |
|
| 查看次数: |
587 次 |
| 最近记录: |