Apache Kafka(アパッチ カフカ)とは、分散ストリーミングプラットフォームです。「Pull型」「高スループット」などの特徴があり、ストリーミングデータパイプライン構築に利用できます。

オープンソースのビッグデータ処理ツール/Apache Kafkaとは

Apache Kafka(アパッチ カフカ)とは、分散ストリーミングプラットフォームです。「Pull型」「高スループット」などの特徴があり、ストリーミングデータパイプライン構築に利用できます。

目次

「Apache Kafka」基本情報
■概要
・基本説明
・経緯
■主な特徴
・Pull型(Publish-Subscribeモデル)
・高速大量処理
・高可用性
・スケーラブル
・ストリームデータ格納構成
・3つのコンポーネント
・4つのコアAPI
・メッセージング保証
・分散型ストレージシステム
・可視化ツール「Trifecta」
・TCPプロトコルベース
・開発用ライブラリ
■ユースケース
・メッセージブローカー
・Webサイトのアクティビティトラッキング
・メトリック
・ログ集計
・ストリーム処理
・イベントソーシング
・コミットログ
■同様製品
■オフィシャルサイト
・オフィシャルサイト
・ライセンス情報
・ダウンロード
・導入事例

「Apache Kafka」基本情報

■概要

Apache Kafka(アパッチ カフカ)とは、分散ストリーミングプラットフォームです。「Pull型」「高スループット」などの特徴があり、ストリーミングデータパイプライン構築に利用できます。

基本説明

Apache Kafkaは、分散環境において「高スループット」かつ「低レイテンシ」で、大規模データ(ログデータ/イベントデータなど)を高速に取り込み、配信できるメッセージングシステムです。オンライン/オフライン両方のメッセージ取得に対応します。

「リアルタイムストリーミングデータパイプライン構築」や「データストリームを変換するリアルタイムストリーミングアプリケーション」などを構築できます。

経緯

2011年、LinkedInがオープンソース公開しました。

その後、Apache Software Foundationが開発を行っています。

TOPに戻る

■主な特徴

Pull型(Publish-Subscribeモデル)

一般的なクライアントサーバモデルにおいて、クライアントがサーバにデータを取りに行くことを「Pull」、サーバがクライアントへデータを送り出すことを「Push」といいます。

メッセージシステムにおいては、「サーバ=Producer」「クライアント=Consumer」と呼ばれます。

Apache Kafkaは、Pull型(Publish-Subscribeモデル)を採用しています。

Pull型であることの主なメリット
・データ転送量などを意識する必要がない
・自らスループット調整できる
・バッチ処理にも対応できる
・複数サーバが生成するログを1箇所にまとめておく処理が可能 など

高速大量処理

Apache Kafkaは、大量のメッセージを高速処理できます。

「カーネルメモリキャッシュを最大限使用する」「ページキャッシュからネットワークのsocketへ効率よくデータを受け渡す」などの仕組みにより高速処理を実現しています。

LinkedInのベンチマークでは、「1秒間で200万メッセージ処理」を達成しています。低スペックのハードウェアでも、数ミリ秒の遅延で「1秒間で数十万メッセージ処理」が可能です。

高可用性

Apache Kafkaは、分散環境運用コーディネーションエンジン「Apache ZooKeeper」を動かして、複数のKafkaサーバを連携させてクラスタ化します。クラスタ化により耐障害性/高可用性を実現します。

以下の仕組みによりデータ損失を防ぎます。
・データストリームを分散レプリケートフォールトトレラントクラスタに安全に保管
・メッセージはディスクにファイルとして保存 など

スケーラブル

Apache Kafkaは、Kafkaクラスタをダウンタイムなしで、柔軟かつ透過的に拡張できます。

ストリームデータ格納構成

Kafkaは、1つ以上のサーバ上でクラスタとして実行されます。

Kafkaクラスタは「トピック」と呼ばれるカテゴリにストリームレコードを格納します。

各「ストリームレコード」は、「キー」+「値」+「タイムスタンプ」で構成されます。

3つのコンポーネント

Apache Kafkaは、「Producer→Broker→Consumer」の、3つのコンポーネントで構成されます。

「Producer」は、メッセージデータ発生元で、メッセージの配信を行います。

「Broker」は、クラスタを構成するKafkaのコアで、「Producer」と「Consumer」の間で、メッセージの受け渡しをするキューとして機能します。

「Consumer」は、メッセージデータ配信先で、メッセージの購読を行います。

4つのコアAPI

Kafkaには4つのコアAPIがあります。

「Producer API」
Producer APIは、アプリケーションが1つ以上のKafkaトピックにストリームレコードを公開する機能を提供します。
Producer APIは、ロードバランスを取るために「ラウンドロビン方式」または「セマンティックパーティション関数」に従ってトピック内のどのパーティションに割り当てるのかについて選択します。

「Consumer API」
Consumer APIは、アプリケーションが1つ以上のトピックをサブスクライブし、トピックに格納されているストリームレコードを処理する機能を提供します。
Consumerインスタンスは「別々のプロセス」または「別々のマシン」に配置できます。
すべてのConsumerインスタンスが同じコンシューマグループに属する場合、ストリームレコードはConsumerインスタンスに対して実質的に負荷分散されます。
すべてのConsumerインスタンスが異なるConsumerグループに属する場合は、各ストリームレコードはすべてのConsumerインスタンスにブロードキャストされます。

「Streams API」
上記の、Producer APIとConsumer APIを使用すれば、単純なストリーム処理を直接実行できます。しかし、変換処理が必要となる複雑なケースの場合、Streams APIを使用することで対応できます。
Streams APIは、入力トピックから連続的なストリームレコードを取り出し、この入力に対して「集約」「結合」「変換」などの処理を行い、トピックを出力するための連続したストリームレコードを生成する機能を提供します。
例えば、小売りアプリケーションの場合では、「販売」および「出荷」の入力ストリームを受け取り、これらのデータに対して並べ替えや価格調整された出力ストリームを生成できます。

「Connector API」
Connector APIは、既存アプリケーション/データシステムに対して、Kafkaトピックを接続する機能を提供します。

メッセージング保証

Apache Kafkaでは、メッセージング保証を提供しています。

①メッセージ送信順
Producerによって特定のトピックパーティションに送信されたメッセージは、送信された順序で追加されます。

②メッセージ取得順
Consumerインスタンスは、ログに格納されている順序でレコードを表示します。

③Consumerプロセスのプール全体での発注保証と負荷分散
トピック内の並列性により、Kafkaは、Consumerプロセスのプール全体での発注保証と負荷分散の両方を提供できます。
これは、トピック内のパーティションをConsumerグループ内のConsumerに割り当てることによって実現され、各パーティションはグループ内のConsumerによって消費されます。これにより、Consumerがそのパーティションの唯一の読者であることを保証し、データを順番に消費します。

分散型ストレージシステム

Kafkaに書き込まれたデータはディスクに書き込まれ、耐障害性のために複製されます。

そのため、Apache Kafkaは、「高性能」「低レイテンシ」「コミットログストレージ」「レプリケーション」「伝播専用」などの特徴を持つ「分散型ストレージシステム」と捉えることもできます。

可視化ツール「Trifecta」

可視化ツール「Trifecta」を利用すると、「Kafkaトピック」や「Kafkaメッセージ」などについて可視化できます。

TCPプロトコルベース

Apache Kafkaでは、クライアント/サーバ間通信は、シンプルで高性能な言語に依存しないTCPプロトコルで行われます。

開発用ライブラリ

Kafkaは多くの言語に対応する開発用ライブラリを用意しています。
・C/C++
・Python
・Go
・Erlang
・.NET
・Ruby
・Node.js
・Perl
・PHP
・Rust
・Java
・Scala DSL
・Swift など

■ユースケース

Apache Kafkaを使用することで、さまざまなユースケースに対応できます。

メッセージブローカー

Apache Kafkaは、大規模なメッセージ処理アプリケーションに適しており、メッセージブローカーとして機能します。

同様機能を提供する「ActiveMQ」「RabbitMQ」などのメッセージングシステムに匹敵します。

Webサイトのアクティビティトラッキング

Apache KafkaをWebサイトアクティビティトラッキングに利用する場合、1つのユーザーアクティビティが1つのトピックとなり、トピックに対してサイトアクティビティ(ページビュー、検索、ユーザーが取る可能性のある他のアクション)が公開されます。

これらのフィードは、さまざまなユースケースのサブスクリプションに利用できます。

メトリック

Apache Kafkaは、運用監視として、分散アプリケーションからの統計を集約して、運用データの一元的なフィードを作成する処理に利用できます。

ログ集計

ログ集約は、通常、物理的なログファイルをサーバーから収集し、ファイルサーバ(HDFS)に配置して処理します。

Kafkaはファイルの詳細について、ログやイベントデータをメッセージストリームとして抽象化する機能を提供します。

ストリーム処理

Apache Kafkaを利用して、リアルタイムでイベントに反応するスケーラブルなストリーム処理アプリケーションを作成できます。複数のステージからなるパイプライン処理を実現できます。

同様な機能を提供するプロダクトとして、「Apache Storm」「Apache Samza」などがあります。

イベントソーシング

イベントソーシングとは、状態変更が時間順のレコードシーケンスとして記録されるアプリケーション設計スタイルです。

非常に大きなログデータを保存できるApache Kafkaは、このスタイルで構築されたアプリケーションの優れたバックエンドになります。

コミットログ

Kafkaは、分散システムにおける一種の外部コミットログとして機能できます。

外部コミットログは、ノード間データ複製において、障害ノードがデータを復元するための再同期メカニズムとして機能します。

同様な機能を提供するプロダクトとして、「Apache BookKeeper」などがあります。

TOPに戻る

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Apache Storm」「RabbitMQ」など。

TOPに戻る

■オフィシャルサイト

オフィシャルサイト

→Apache Kafka

ライセンス情報

Apache Kafkaのライセンスは「Apache License 2.0」です。

詳細について、こちらを参照ください。
→GitHub →kafka/LICENSE

ダウンロード

→Apache Kafka →Download

導入事例

Apache Kafkaは、「LinkeIn」「Twitter」「Netflix」「Uber」「Tumblr」などでの採用実績があります。

→Apache Kafka →Powered By

TOPに戻る

 

参考元サイト

TOPに戻る

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

Apache Kafka最新TOPICS

【OSS】分散ストリーミングプラットフォーム「Apache Kafka 1.0.0」リリース---エンタープライズレベルの拡張性と信頼性の強化、各種性能改善(2017年11月07日 11:03)

Kafka開発チームは、11月1日、 分散ストリーミングプラットフォーム「Apache Kafka 1.0.0」を発表した。 【「Apache Kafka」とは】 https://www.ossnews.jp/oss_info/Apache_Kafka 【1.0.0のポイント】 ・企業での利用に向けた拡張性と信頼性の強化 ・性能改善 ・JBODサポート改善 ・安定性強化

Apache Kafka最新CLOSEUPコラム

無料資料プレゼント

機械学習導入にあたって理解したい4つのステップ

講演資料を見るには、 プライバシーポリシーに同意して、送付先メールアドレスをご入力しご請求ください。

またご入力いただきました情報は、当該資料の作成・提供企業とも共有させていただき、当社及び各社のサービス、製品、セミナー、イベントなどのご案内に使用させていただきます。

本資料を見るには次の画面でアンケートに回答していただく必要があります。



  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter