Apache Kafka とは?

Apache Kafka

Apache Kafka最新情報

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

OSSの保守サポートサービスの内容はこちら OSSの導入については、こちらのフォームからお問い合わせ下さい OSS全般の事例紹介はこちら

Apache Kafkaバージョンアップ情報

すべてを見る

更新日:2022-08-23

Apache Kafkaの概要

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

TOPに戻る

Apache Kafkaの主な特徴

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オブジェクトを管理および検査できます。

TOPに戻る

Apache Kafkaのユースケース

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

ActiveMQ
http://activemq.apache.org/

RabbitMQ
https://www.rabbitmq.com/

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

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

Flume
https://flume.apache.org/

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

Apache Storm
https://storm.apache.org/

Apache Samza
https://samza.apache.org/

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

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

TOPに戻る

Apache Kafkaの動作環境

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

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

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

TOPに戻る

Apache Kafkaのライセンス

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

TOPに戻る

Apache Kafkaの参考情報

Apache Kafka公式サイト

Apache Kafka公式ドキュメント

Apache Kafkaエコシステムとして動作するツール一覧

TOPに戻る

Apache Kafkaのサポート

NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。

TOPに戻る

OpenStandiaに関する
資料請求・お問い合わせはこちら

  • 資料請求
  • お問い合わせ

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

  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気midPoint
  • 人気Keycloak
  • 注目MongoDB
  • ForgeRock AM(OpenAM)
  • ForgeRock IDM(OpenIDM)
  • MongoDB
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • PostgreSQL
  • Apache Struts
  • Apache Kafka
  • Apache Hadoop
  • Apache Spark
  • Spring Framework
  • Apache Tomcat
  • Solr
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • ForgeRock DS(OpenDJ)
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • BIND
  • Dovecot
  • Pentaho
  • sendmail
  • Courier-IMAP
  • ForgeRock DS(OpenDJ)
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO