ビッグデータ収集のデファクト Apache Kafkaについて一問一答形式で学ぼう(前編)
Q. Kafkaとは?
A. イベントストリーミングプラットフォームです。
「イベント」を次々に収集、処理、保持、統合するための技術です。
Q. イベントって?
A. Kafkaが扱う情報の最小単位で、例えば"ユーザーがクリックしたという情報"などに当たります。
イベントには"クリックした"という情報以外にタイムスタンプが付いていて、後で時間的な並び替えをするのに使われます。
Q. 多様で大量のイベントが来てごっちゃにならない?
A. 何も手を打たないとそうなるので、キーバーリュー形式でラベル付けして整理されます。
例えばKafkaがクリックイベントを素早く見つけたいとき、ラベルを見ることですぐに分かるのです。
また例えば"クリックイベント"と"センサー受信イベント"を別々のカテゴリーとして処理したり保存したりして整理・高速に処理します。
Kafkaではこのカテゴリーのことをトピックといいます。
Q. わざわざトピックに分けてどんなメリットがある?
A. 特定のトピックだけ処理をしたり、トピックごとに並列で処理したり、とにかくKafkaではトピックごとに色々やります。
トピックはKafkaで非常に重要な概念です。
トピックには次の特徴があります。
追記専用で順序が保たれる
トピック内のイベントは順番に処理される
トピック内のイベントは変更されない
Q. 「トピックごとに並列に処理」のところ詳しく教えて
A. トピックごとに別のコンピュータに処理(分散処理)させることで効率的に処理します。
さらにいうと同じトピックの中でもパーティションという単位で分けられて処理されます。
つまり、やってきたイベントをトピックとパーティションに分けて、パーティションごとに別々のコンピュータ(ノード)に処理させるのです。
Q. どうやってイベントをパーティションに振り分ける?
A. 2つの方式があって、一つはなんにも基づかずに順番に振り分けるラウンドロビン方式、もう一つが特定のキーに基づいて振り分ける方式があります。
両者の使い分けのポイントは均等に振り分けるかキーごとの順序を保ちたいのかです。
後編へ続く?
この記事が参加している募集
よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!