1. ホーム
  2. apache-kafka

[解決済み] Apache Kafkaのコンテキストで「Rebalancing」とはどういう意味ですか?

2022-03-04 19:51:55

質問

私はKafkaの新しいユーザーで、2-3週間ほど前から試用しています。私は現時点でKafkaがどのように動作するかをほとんど理解していると信じていますが、私自身のKafkaコンシューマー(これは不明瞭ですが、私はv 0.9で利用可能になると考えられている新しいKafkaConsumerのガイドラインに従っています、これは現在「トランク」レポにあります)用のAPIを適合しようと試みた後、私は同じgroupIDを持つ複数の消費者がいればトピックから消費するレイテンシーの問題がありました。

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

また、次のような一節を目にしました。 https://cwiki.apache.org/confluence/display/KAFKA/Kafka+0.9+Consumer+Rewrite+Design どうしても理解できないので、どなたか理解を助けていただけると助かります。

<ブロッククオート

リバランシングとは、コンシューマーインスタンスのグループが (同じグループに属している)互いに排他的な トピックのパーティションのセットです。その際 あるコンシューマーグループのリバランス操作が成功した場合、そのグループのすべての のパーティションは、単一のコンシューマーによって所有されます。 のインスタンスを作成します。リバランスの仕組みは以下の通りです。 すべてのブローカーは、グループのサブセットに対するコーディネータとして選出されます。 消費者グループ あるグループのコーディネータ・ブローカーが コンシューマーグループのメンバーシップが変更された場合、リバランスを行う。 の変更またはパーティションの変更に対応する。また その結果得られるパーティションオーナーシップの伝達を担当する を、リバランスを受けるグループのすべてのコンシューマに設定します。 の操作になります。

解決方法は?

新しいコンシューマがコンシューマ グループに参加すると、コンシューマのセットは、各コンシューマにパーティションを割り当てるために、負荷の "rebalance" を試みます。この割り当てが行われている間にコンシューマのセットが変更された場合、リバランスは失敗し、再試行されます。この設定は、あきらめるまでの最大試行回数を制御します。

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

また、以下のような場合にも発生する可能性があります。

ZooKeeperのセッションタイムアウト。この期間、コンシューマが ZooKeeper にハートビートを送信できない場合、それは死んだとみなされ、リバランスが発生する。

お役に立てれば幸いです。