Kafka と Spark アーキテクチャを作成する

完了

Azure HDInsight で Kafka と Spark を併用するには、それらを同じ VNet 内に配置するか、VNet をピアリングして、それらのクラスターが DNS 名前解決を使用して動作するようにする必要があります。

Kafka と Spark のアーキテクチャとは

同じ VNet 内にクラスターを作成するには、次の手順に従います。

  1. リソース グループを作成する
  2. リソース グループに VNet を追加する
  3. Kafka クラスターと Spark クラスターを同じ VNet に追加するか、あるいはこれらのサービスが DNS 名前解決を使用して動作する VNet をピアリングします。

HDInsight の Kafka および Spark クラスターを接続するには、ネイティブの Spark - Kafka コネクタを使用することをお勧めします。これにより、Spark クラスターが Kafka クラスター内のデータの個々のパーティションにアクセスできるようになるため、リアルタイム処理ジョブに含まれる並列処理の数が増え、非常に高いスループットが得られます。

両方のクラスターが同じ VNet 内にある場合は、Spark ストリーミング コード内で Kafka ブローカーの FQDN を使用することもできます。また、エンタープライズ セキュリティのために VNet に対し NSG ルールを作成することもできます。

ソリューションのアーキテクチャ

Azure 上でのリアルタイム ストリーミング分析パターンには通常、次のソリューション アーキテクチャが使用されます。

  1. 取り込み: 非構造化データまたは構造化データは、Azure HDInsight 上の Kafka クラスターに取り込まれます。
  2. 準備とトレーニング: HDInsight 上の Spark でデータが準備され、トレーニングされます。
  3. モデルとサービス: データは、Azure Synapse や HDInsight 対話型クエリなどのデータ ウェアハウスに格納されます。
  4. インテリジェンス: データは、Power BI や Tableau などの分析ダッシュボードに提供されます。
  5. ストア: データは Azure Storage などのコールド ストレージ ソリューションに格納され、後で提供されます。

Kafka と Spark のソリューション アーキテクチャ

サンプル シナリオのアーキテクチャ

次のユニットでは、サンプル アプリケーション用のソリューション アーキテクチャの構築を開始します。 このサンプルでは、Azure Resource Manager テンプレート ファイルを使用して、リソース グループ、VNet、Spark クラスター、Kafka クラスターを作成します。

それらのクラスターがデプロイされたら、いずれかの Kafka ブローカーに SSH で接続し、Python プロデューサー ファイルをヘッド ノードにコピーします。 このプロデューサー ファイルは、10 秒ごとに擬似株価を提供します。また、メッセージのパーティション番号とオフセットをコンソールに書き込みます。

プロデューサーが実行されたら、Jupyter Notebook を Spark クラスターにアップロードできます。 このノートブックで、Spark および Kafka クラスターを接続し、データに対していくつかのサンプル クエリ (イベント ウィンドウ内で株価の高値と安値を検索するなど) を実行します。

Kafka と Spark のサンプル ソリューション アーキテクチャ