74

私は Kafka の新しいユーザーで、現在約 2 ~ 3 週間試しています。現時点では、Kafka の大部分がどのように機能するかをよく理解していると思いますが、API を自分の Kafka コンシューマに適合させようとした後 (これはあいまいですが、想定されている新しい KafkaConsumer のガイドラインに従っています) v 0.9 で利用可能で、これは「trunk」レポ atm にあります) 同じグループ ID を持つ複数のコンシューマーがある場合、トピックから消費する際に遅延の問題が発生しました。

このセットアップでは、私のコンソールは一貫して「リバランス トリガー」に関する問題をログに記録します。新しいコンシューマーをコンシューマー グループに追加するとリバランスが発生しますか? 同じ groupID 内のどのコンシューマー インスタンスがどのパーティションを取得するかを把握するためにトリガーされますか?

また、 https://cwiki.apache.org/confluence/display/KAFKA/Kafka+0.9+Consumer+Rewrite+Designからこの一節に出くわしましたが、理解できないようです。その意味は非常に高く評価されます:

リバランスとは、(同じグループに属する) コンシューマー インスタンスのグループが、グループがサブスクライブしているトピックのパーティションの相互に排他的なセットを所有するように調整するプロセスです。コンシューマ グループのリバランス操作が正常に終了すると、サブスクライブされたすべてのトピックのすべてのパーティションが、グループ内の単一のコンシューマ インスタンスによって所有されます。リバランスの仕組みは以下の通りです。すべてのブローカーは、コンシューマー グループのサブセットのコーディネーターとして選出されます。グループのコーディネーター ブローカーは、サブスクライブされたトピックのコンシューマー グループ メンバーシップの変更またはパーティションの変更に対するリバランス操作の調整を担当します。また、リバランス操作中のグループのすべてのコンシューマーに、結果のパーティション所有権の構成を伝える役割もあります。

4

4 に答える 4

69

新しいコンシューマーがコンシューマー グループに参加すると、一連のコンシューマーは負荷を「再調整」して各コンシューマーにパーティションを割り当てようとします。この割り当ての実行中に一連のコンシューマーが変更された場合、リバランスは失敗し、再試行されます。この設定は、あきらめるまでの最大試行回数を制御します。

このコマンドは rebalance.max.retries で、デフォルトでは 4 に設定されています。

また、次の場合に発生している可能性があります。

ZooKeeper セッションのタイムアウト。コンシューマがこの期間に ZooKeeper にハートビートを送信できなかった場合、停止していると見なされ、リバランスが発生します。

お役に立てれば!

于 2015-06-22T19:21:45.000 に答える