見出し画像

ビッグデータ収集のデファクト Apache Kafkaについて一問一答形式で学ぼう(前編)

Q. Kafkaとは?


A. イベントストリーミングプラットフォームです。
「イベント」を次々に収集、処理、保持、統合するための技術です。

Q. イベントって?

A. Kafkaが扱う情報の最小単位で、例えば"ユーザーがクリックしたという情報"などに当たります。
イベントには"クリックした"という情報以外にタイムスタンプが付いていて、後で時間的な並び替えをするのに使われます。

Q. 多様で大量のイベントが来てごっちゃにならない?

A. 何も手を打たないとそうなるので、キーバーリュー形式でラベル付けして整理されます。
例えばKafkaがクリックイベントを素早く見つけたいとき、ラベルを見ることですぐに分かるのです。
また例えば"クリックイベント"と"センサー受信イベント"を別々のカテゴリーとして処理したり保存したりして整理・高速に処理します。
Kafkaではこのカテゴリーのことをトピックといいます。

Q. わざわざトピックに分けてどんなメリットがある?

A. 特定のトピックだけ処理をしたり、トピックごとに並列で処理したり、とにかくKafkaではトピックごとに色々やります。
トピックはKafkaで非常に重要な概念です。
トピックには次の特徴があります。

  • 追記専用で順序が保たれる

  • トピック内のイベントは順番に処理される

  • トピック内のイベントは変更されない

Q. 「トピックごとに並列に処理」のところ詳しく教えて

A. トピックごとに別のコンピュータに処理(分散処理)させることで効率的に処理します。
さらにいうと同じトピックの中でもパーティションという単位で分けられて処理されます。
つまり、やってきたイベントをトピックとパーティションに分けて、パーティションごとに別々のコンピュータ(ノード)に処理させるのです。

Q. どうやってイベントをパーティションに振り分ける?

A. 2つの方式があって、一つはなんにも基づかずに順番に振り分けるラウンドロビン方式、もう一つが特定のキーに基づいて振り分ける方式があります。
両者の使い分けのポイントは均等に振り分けるかキーごとの順序を保ちたいのかです。

後編へ続く?

この記事が参加している募集

よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!