トップ OSS紹介 Apache Kafka

Apache Kafka

サポート対象

NRIのOpenStandiaが提供するApache Kafka最新情報

バージョンアップ情報

Apache Kafka情報

Apache Kafkaとは

Apache Kafka(アパッチ カフカ)は、JavaとScalaで書かれたオープンソースの分散ストーリーミング送受信処理基盤であり、メッセージキュー(MQ)やメッセージングシステムと似たソフトウェアです。
Kafkaは主に、リアルタイムストリーミングデータパイプラインとリアルタイムストリーミングアプリケーションの構築に使用されます。ストリームデータとは、サーバのログ、ユーザの購入履歴やSNSの投稿など、様々なデータの集合のことです。
KafkaはアメリカのビジネスSNS企業であるLinkedInで2011年頃に開発されオープンソース化されました。その後、Apacheソフトウェア財団のプロジェクトとして認められ、現在はApacheソフトウェア財団の管理下で開発が継続されています。また、LinkedInでKafkaの開発に関わった主要メンバー達はConfluentという会社を立ち上げKafkaのEnterprise向けサービスを行っています。

主な特徴

Kafkaは、複数のアプリケーションやデータベース間でストリームデータの中継点として送受信をする役目を担います。耐障害のために、送信側(Producer)からのストリームデータを保存するフォールトトレラントな設計となっています。各Producerから送られてくるストリームデータはTopicと呼ばれ、Topic毎にカテゴライズされて保存されます。
Topicの中身はrecordと呼ばれるkey-valueで構成されたデータがtimestampをもって順序立てて連続しています。受信側はConsumerと呼ばれ、KafkaはConsumer毎に決められたTopicを送信します。Kafkaは単一構成でも稼働しますが、複数のKafkaサーバを遠隔地のデータセンターに配置してクラスターを構成することも可能です。

Kafkaには5つのコアAPIが存在します。

  • Producer API
    送信側のアプリケーションやDBから1つ以上のopicとしてのストリームデータの配信を許可します。
  • Consumer API
    受信側に1つ以上のTopicとしてのストリームデータの受信と処理を許可します。
  • Steams API
    アプリケーションにストリームプロセッサーとして動作することを許可します。1つ以上のTopicとしてのストリームデータをinputストリームとして受け取り、効果的に変換してoutputストリームとして送信します。
  • Connector API
    既存のアプリケーションやデータベースをProducerやConsumerとして、データをインポートやエクスポートすることを許可します。
  • Admin API
    Topic、broker、およびその他のKafkaオブジェクトを管理および検査できます。

ユースケース

Messagingシステム

Kafkaをメッセージブローカーとして利用します。Kafkaはこれまでのメッセージブローカーの代替として十分に機能します。Kafkaは高いスループット、レプリケーションとフォールトトレランス機能を備えていますので、大規模なメッセージプロセッシングシステムを構成するための良いソリューションと考えられます。この分野では、類似のソフトウェアとしてActiveMQや、RabbitMQが存在します。

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

Kafkaは元々、Webサイトにおけるユーザのアクティビティを収集するため利用されていました。Webサイトでのユーザのアクティビティは、ページビューや検索、ユーザがサイト上で行なう様々な動作が含まれます。それらをリアルタイムにモニタリングすることや、処理を行い収集したデータをHadoopなどのシステムに送信してユーザ動向の解析を行えます。

メトリックスやログの収集

Kafkaは、各システムから送られてくるシステムのメトリックスをモニタリングするために収集する役目を担います。また、多くのユーザはKafkaをログ収集のために利用しています。この分野では、Flumeなどの類似のソフトウェアが存在します。

ストリーム処理

Kafkaを、データプロセッシングのパイプラインとして利用します。Kafkaは送信者からデータを受け取って収集し、受信者に向け変換を行い送信します。この分野では、Apache StormやApache Samzaが類似のソフトウェアとして存在します。

イベントソーシング

Kafkaは、イベントを中心とした状態の変更が時系列の一連のレコードとして記録されるアプリケーション設計となっています。この設計はCQRSで有用で、イベントハブとして利用されます。

コミットログ

Kafkaは、分散システムの外部コミットログとして機能します。ノード間のデータ複製や障害時のデータ復元のメカニズムとしても機能し、また、トピックという概念を用いて、書き込み/読み出しを並列に行うことで、高速かつフォールトトレランスに優れた通信を実現します。

動作環境

Kafkaは、下記に示すUnix系OS上で動作します。Windowsで稼働させるには、まだいくつかの問題が残っているため、現状ではWindowsはサポートされるプラットフォームには含まれていません。

  • 主要なLinuxディストリビューション
  • Solaris
  • macOS

稼働させるにはJavaが必要になります。

Apache Kafkaのライセンス

KafkaはApacheのトップレベルプロジェクトの1つです。ライセンスはApache License 2.0となっており、ユーザはそのソフトウェアの使用や頒布、修正、派生版の頒布をすることに制限を受けません。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Apache Spark
    サポート対象

    Apache Spark

    アパッチ スパーク。Hadoopの後発として期待されるビッグデータ処理基盤です。

  • Apache Hadoop
    サポート対象

    Apache Hadoop

    アパッチ ハドゥープ。Java言語で実装された大規模データの蓄積、分析を分散して処理するフレームワークです。

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。