HDInsight、Spark、Kafka を使用する

完了

たとえば、データ エンジニアとして、ソリューションを構築するために作成する HDInsight クラスターの最適な種類を判断する必要があるとします。 Spark および Kafka クラスターを一緒に使用すると、リアルタイムまたは準リアルタイムのデータ ストリームを取り込んで処理する優れた方法が提供されます。

Kafka を使用したリアルタイムのデータの取り込み

Apache Kafka は、メッセージング システム、公開サブスクライブシステム、またはストリーミング処理プラットフォームとして使用できます。 リアルタイムに読み取り可能で、処理後は、同時に複数のコンシューマーによって読み取ることができるログにデータを格納します。

Spark Structured Streaming を使用したリアルタイム イベントの処理

Apache Spark は、オープンソースの分散データ処理エンジンであり、さまざまな状況で使用して、大規模なデータの処理、クエリ、分析、変換をすばやく行うことができます。 Spark は、ビッグ データに対する ETL や SQL ジョブの実行、ストリーミング データの処理、機械学習の実行によく使用されます。

Spark Structured Streaming には、フォールト トレランスの保証、バッチおよびストリーミング データの結合、到着遅延データへの対処など、他のプラットフォームでは利用できない機能があります。これらの機能については、このモジュールで後ほど詳しく説明します。 また、Azure HDInsight を使用すると、Spark と Kafka の両方のクラスターを収容する VNet を作成できます。 両方のクラスターを 1 つの VNet 内に配置しておくと、Spark クラスターはクラスターやエンドポイント間で通信するのではなく、Kafka クラスター内のデータの個々のパーティションにアクセスできます。 データの個々のパーティションにアクセスできるようにすると、リアルタイム処理ジョブに含まれる並列処理が増加し、スループットを向上させることができます。

Kafka と Spark を併用した場合のシナリオ

Apache Kafka および Spark によって実現するリアルタイム ストリーミングの恩恵を受けられるリアルタイム分析シナリオが数多くあります。 こうしたシナリオのすべてに、ストリーミング データ インジェスト コンポーネント (Kafka コンポーネント) と、データに対して実行される分析プロセス (Spark コンポーネント) の両方が使用されています。

Scenarios for using Kafka with Spark

  • リアルタイムの不正検出。金融取引データを取り込み、不正行為の履歴パターンと比較します。
  • フリート管理やコネクテッド カーのシナリオ。IoT デバイス データを取り込み、走行距離、速度、場所、気温データなどの特定のセンサー データがしきい値に達したときに対応します。
  • e コマースでのクリック ストリーム分析ソリューション。製品のページ配置が衝動買いやクリック スルーにどのように影響するかを分析します。
  • リアルタイムでの患者の監視。血圧と心拍の情報を確認し、患者が重篤な状態にあるときに医師に通知します。
  • スマート グリッド ソリューション。電力の使用を監視し、需要の変化に対応します。
  • 店舗での顧客の行動。特定の時間帯に行われた購入内容を確認して、補充をスケジュールし、レジの人員配置を変更します。
  • IT インフラストラクチャとネットワーク監視。サーバーの可用性と帯域幅を監視し、必要に応じてトラフィックを再ルーティングします。
  • リアルタイムでの需要と在庫管理。低い在庫レベルがないか監視し、そうした商品の再注文または補充を促します。

バッチからストリーミングへの簡単な移行

これらのシナリオは多くの場合、オンプレミスで、またはデータのバッチ処理から開始されますが、ソリューションの発展とニーズの変化に伴って、バッチ処理からストリーミングへ、またオンプレミスのアプリケーションからクラウドへと移行されます。 前述のように、Spark Structured Streaming は、バッチとストリーミングの両方のジョブを処理できる点で際立っています。この機能により、実行するどのバッチ処理もリアルタイム ジョブに簡単に移行でき、同じアプリケーションやフレームワークを使用して、一方から他方に移行することも、それらを同時に使用することもできます。