首页 文章

在Storm中,如何将偏移迁移到 Kafka 存储?

提问于
浏览
1

我一直有各种与 Kafka 和抵消相关的不稳定性 . 像工作人员在启动时崩溃的事情,包括与无效补偿相关的异常,以及其他我不理解的事情 .

我读过,建议迁移偏移量以存储在Kafka而不是Zookeeper中 . 我在Kafka文档中找到了以下内容:

在早期版本中,将偏移量从ZooKeeper迁移到Kafka Kafka消费者,默认情况下会在ZooKeeper中存储它们的偏移量 . 通过以下步骤,可以迁移这些使用者以将偏移提交到Kafka:1 . 在您的使用者配置中设置offsets.storage = kafka和dual.commit.enabled = true . 2.对消费者进行滚动反弹,然后验证您的消费者是否 Health . 3.在您的使用者配置中设置dual.commit.enabled = false . 4.对您的消费者进行滚动反弹,然后验证您的消费者是否 Health . 如果设置offsets.storage = zookeeper,也可以使用上述步骤执行回滚(即,从Kafka迁移回ZooKeeper) .

http://kafka.apache.org/documentation.html#offsetmigration

但是,我再也不明白这是在指示我做什么 . 我在拓扑配置中没有看到我配置存储偏移的位置 . 它是否埋藏在集群中?

关于是否在Kafka而不是Zookeeper中存储偏移的任何建议都是个好主意?我如何才能实现这一变化?

1 回答

  • 3

    在撰写本文时,Storm的Kafka spout(参见文档/ README在https://github.com/apache/storm/tree/master/external/storm-kafka)仅支持在ZooKeeper中管理消费者偏移 . 也就是说,所有当前的Storm版本(高达0.9.x并包括0.10.0 Beta)仍依赖于ZooKeeper来存储此类偏移 . 因此,您不应该执行上面引用的ZK-> Kafka偏移迁移,因为Storm还不兼容 .

    你需要等到Storm项目 - 特别是它的Kafka鲸鱼喷水 - 支持通过Kafka(而不是ZooKeeper)来管理消费者抵消 . 是的,一般情况下,最好将消费者抵消存储在Kafka而不是ZooKeeper,但唉,风暴还没有 .

    Update November 2016: 与此同时,风暴的情况有所改善 . 有's now a new, second Kafka spout that is based on Kafka'的新的0.10消费者客户端,它在Kafka(而不是ZooKeeper)中存储消费者抵消:https://github.com/apache/storm/tree/master/external/storm-kafka-client .

    但是,在我写这篇文章的时候,风暴用户邮件列表中的用户仍然报告了几个问题(例如Urgent help! kafka-spout stops fetching data after running for a while),所以我会小心翼翼地使用这个新的Kafka喷口,并且只有经过全面测试 .

相关问题