ApacheKafka-はじめに

ビッグデータでは、膨大な量のデータが使用されます。データに関しては、2つの大きな課題があります。1つ目は大量のデータを収集する方法であり、2つ目は収集したデータを分析することです。これらの課題を克服するには、メッセージングシステムが必要です。

Kafkaは、分散型ハイスループットシステム向けに設計されています。Kafkaは、従来のメッセージブローカーの代わりとして非常にうまく機能する傾向があります。Kafkaは、他のメッセージングシステムと比較して、スループット、組み込みのパーティショニング、レプリケーション、および固有のフォールトトレランスが優れているため、大規模なメッセージ処理アプリケーションに最適です。

メッセージングシステムとは何ですか?

メッセージングシステムは、あるアプリケーションから別のアプリケーションにデータを転送する責任があるため、アプリケーションはデータに集中できますが、データの共有方法について心配する必要はありません。分散メッセージングは​​、信頼性の高いメッセージキューの概念に基づいています。メッセージは、クライアントアプリケーションとメッセージングシステムの間で非同期にキューに入れられます。2種類のメッセージングパターンを使用できます。1つはポイントツーポイントで、もう1つはパブリッシュ/サブスクライブ(pub-sub)メッセージングシステムです。ほとんどのメッセージングパターンは次のとおりですpub-sub

ポイントツーポイントメッセージングシステム

ポイントツーポイントシステムでは、メッセージはキューに保持されます。1人以上のコンシューマーがキュー内のメッセージを消費できますが、特定のメッセージは最大1人のコンシューマーのみが消費できます。コンシューマーがキュー内のメッセージを読み取ると、そのメッセージはそのキューから消えます。このシステムの典型的な例は注文処理システムで、各注文は1つの注文処理者によって処理されますが、複数の注文処理者も同時に機能します。次の図は、構造を示しています。

パブリッシュ/サブスクライブメッセージングシステム

パブリッシュ/サブスクライブシステムでは、メッセージはトピックに永続化されます。ポイントツーポイントシステムとは異なり、コンシューマーは1つ以上のトピックをサブスクライブし、そのトピック内のすべてのメッセージを消費できます。パブリッシュ/サブスクライブシステムでは、メッセージプロデューサーはパブリッシャーと呼ばれ、メッセージコンシューマーはサブスクライバーと呼ばれます。実際の例は、スポーツ、映画、音楽などのさまざまなチャンネルを公開するDish TVです。誰でも自分のチャンネルのセットを購読して、購読しているチャンネルが利用可能になるといつでもそれらを取得できます。

カフカとは何ですか?

Apache Kafkaは、分散パブリッシュ/サブスクライブメッセージングシステムであり、大量のデータを処理でき、あるエンドポイントから別のエンドポイントにメッセージを渡すことができる堅牢なキューです。Kafkaは、オフラインとオンラインの両方のメッセージの消費に適しています。Kafkaメッセージはディスク上に保持され、データ損失を防ぐためにクラスター内で複製されます。Kafkaは、ZooKeeper同期サービスの上に構築されています。リアルタイムのストリーミングデータ分析のために、ApacheStormおよびSparkと非常によく統合されています。

利点

以下はKafkaのいくつかの利点です-

  • Reliability − Kafkaは、分散、パーティション化、複製、およびフォールトトレランスを備えています。

  • Scalability − Kafkaメッセージングシステムは、ダウンタイムなしで簡単に拡張できます。

  • Durability− Kafkaは分散コミットログを使用します。これは、メッセージができるだけ速くディスクに保持されるため、耐久性があります。

  • Performance− Kafkaは、メッセージの公開とサブスクライブの両方で高いスループットを発揮します。大量のメッセージが保存されていても、安定したパフォーマンスを維持します。

Kafkaは非常に高速で、ダウンタイムとデータ損失がゼロであることを保証します。

ユースケース

Kafkaは多くのユースケースで使用できます。それらのいくつかを以下に示します-

  • Metrics− Kafkaは、運用監視データによく使用されます。これには、分散アプリケーションからの統計を集約して、運用データの集中フィードを生成することが含まれます。

  • Log Aggregation Solution − Kafkaを組織全体で使用して、複数のサービスからログを収集し、それらを標準形式で複数の消費者が利用できるようにすることができます。

  • Stream Processing−StormやSparkStreamingなどの一般的なフレームワークは、トピックからデータを読み取り、処理し、処理されたデータを新しいトピックに書き込んで、ユーザーとアプリケーションが利用できるようにします。Kafkaの強力な耐久性は、ストリーム処理のコンテキストでも非常に役立ちます。

カフカの必要性

Kafkaは、すべてのリアルタイムデータフィードを処理するための統合プラットフォームです。Kafkaは、低遅延のメッセージ配信をサポートし、マシン障害が発生した場合のフォールトトレランスを保証します。多数の多様な消費者を処理する能力があります。Kafkaは非常に高速で、毎秒200万回の書き込みを実行します。Kafkaはすべてのデータをディスクに保持します。つまり、基本的にすべての書き込みはOS(RAM)のページキャッシュに送られます。これにより、ページキャッシュからネットワークソケットにデータを転送するのが非常に効率的になります。