【问题标题】:Kafka streams: Multiple stream applications for multiple topic partitionsKafka流:多主题分区的多流应用
【发布时间】:2017-10-08 07:32:04
【问题描述】:

我有一个包含 2 个分区和 2 个 kafka 流应用程序的输入主题,它们具有相同的 application.id 和不同的接收器主题。

1) 我同时启动两个应用程序,它们开始接收数据,但是当我杀死其中一个应用程序时,另一个应用程序一直卡在这个状态。 (仅供参考,消费者设置已将 SESSION_TIMEOUT_MS_CONFIG 设置为 120000)

[2017-10-08 00:26:17,297] 调试 [kafka-coordinator-heartbeat-thread | ]将组 test.joins.hourly 的心跳请求发送到协调器:9092(id:2147483647 rack:null)(org.apache.kafka.clients.consumer.internals.AbstractCoordinator) [2017-10-08 00:26:17,398] 调试 [kafka-coordinator-heartbeat-thread | test.joins.hourly] 收到组 test.joins.hourly (org.apache.kafka.clients.consumer.internals.AbstractCoordinator) 的成功心跳响应

2) 如何确保第二个应用程序开始处理来自两个分区的记录?我怎样才能证明这一点?

请帮忙!

【问题讨论】:

    标签: apache-kafka apache-kafka-streams


    【解决方案1】:

    “另一个被卡住了”是什么意思?你等了多久才开始消费?

    在您的情况下,集群可能需要 2 分钟才能在您杀死其中一个消费者后重新平衡您的消费者。它还取决于heartbeat.interval.ms - 它越小,重新平衡的平均时间就越短。

    【讨论】:

    • 我收到此错误org.apache.kafka.streams.errors.LockException: task [0_1] Failed to lock the state directory for task 0_1,上面发送心跳请求并收到成功的心跳继续循环运行超过 2 分钟。
    • 锁最终应该被释放。如果没有,那就是一个错误。你用什么版本?随着时间的推移,与日志相关的错误得到了修复——升级到最新版本可能会解决问题(注意,Kafka 1.0 即将发布)。如果您的应用程序现在处于错误状态,您可能需要手动删除状态目录以重新启动。
    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2018-07-22
    • 2022-12-03
    相关资源
    最近更新 更多