web-dev-qa-db-ja.com

Kafkaのauto.offset.resetおよびenable.auto.commitの意味について明確ではありません

私はKafkaを初めて使用しますが、Kafka設定の意味を本当に理解していません。誰もが私にもっと分かりやすい説明をすることができます!

ここに私のコードがあります:

 val kafkaParams = Map[String, Object](
  "bootstrap.servers" -> "master:9092,slave1:9092",
  "key.deserializer" -> classOf[StringDeserializer],
  "value.deserializer" -> classOf[StringDeserializer],
  "group.id" -> "GROUP_2017",
  "auto.offset.reset" -> "latest", //earliest or latest
  "enable.auto.commit" -> (true: Java.lang.Boolean)
)

私のコードではどういう意味ですか?

10
Gpwner

意味を説明しますが、読むことを強くお勧めします Kafka Web Site Configuration

"bootstrap.servers" -> "master:9092,slave1:9092"

基本的にKafkaクラスター構成:IPおよびポート。

 "key.deserializer" -> classOf[StringDeserializer]
 "value.deserializer" -> classOf[StringDeserializer]

このSO 答えは目的を説明します。

"group.id" -> "GROUP_2017"

コンシューマプロセスはgroupIdに属します。 groupIdは複数のコンシューマーを持つことができ、Kafkaは1つのコンシューマープロセスのみを1つのパーティションに割り当てます(データを消費するため)。コンシューマの数が利用可能なパーティションよりも大きい場合、一部のプロセスはアイドル状態になります。

"enable.auto.commit" -> (true: Java.lang.Boolean)

そのフラグがtrueである場合、Kafkaは、Zookeeperを使用してKafkaから持ってきたメッセージをコミットし、最後に読み取った「オフセット」を保持できます。このアプローチは、持ち込んだレコードが(コードで記述したロジックを使用して)正しく処理されたことを保証するものではないため、実動システム用のより堅牢なソリューションが必要な場合には最適ではありません。このフラグがfalseの場合、Kafkaは最後に読み込まれたオフセットを認識しないため、プロセスを再起動すると、次のフラグの値に応じて 'earliest'または 'latest'オフセットの読み取りを開始します( auto.offset.reset)。最後に、 このClouderaの記事 は、オフセットを適切な方法で管理する方法を詳細に説明しています。

"auto.offset.reset" -> "latest"

このフラグは、[コミット]がまだない場合にオフセットの読み取りを開始する場所をKafkaに指示します。言い換えれば、Zookeeperでオフセットをまだ保持していない場合(手動で、またはenable.auto.commitフラグを使用して)、「最も早い」または「最新の」から開始します。

9
dbustosp

Apache KafkaのWebサイト https://kafka.Apache.org/documentation.html#newconsumerconfigs に記載されているコンシューマ構成パラメータの完全なセット

1
Hans Jespersen