HDInsight 上の Apache Kafka を用いた Apache Spark ストリーミング (DStream) の例Apache Spark streaming (DStream) example with Apache Kafka on HDInsight

Apache Spark を使用して、HDInsight 上の Apache Kafka に対して DStreams による送信または受信ストリーミングを行う方法について説明します。Learn how to use Apache Spark to stream data into or out of Apache Kafka on HDInsight using DStreams. この例では、Spark クラスター上で実行する Jupyter Notebook を使用します。This example uses a Jupyter Notebook that runs on the Spark cluster.

注意

このドキュメントの手順では、HDInsight の Spark クラスターと HDInsight の Kafka クラスターの両方を含む Azure リソース グループを作成します。The steps in this document create an Azure resource group that contains both a Spark on HDInsight and a Kafka on HDInsight cluster. これらのクラスターは両方とも、Spark クラスターが Kafka クラスターと直接通信できるように、Azure Virtual Network 内に配置します。These clusters are both located within an Azure Virtual Network, which allows the Spark cluster to directly communicate with the Kafka cluster.

このドキュメントの手順を完了したら、余分に課金されないようにするためにクラスターは削除してください。When you are done with the steps in this document, remember to delete the clusters to avoid excess charges.

重要

この例では DStreams を使用します。DStreams は古い Spark ストリーミング テクノロジです。This example uses DStreams, which is an older Spark streaming technology. 新しい Spark ストリーミング機能を使用する例については、Apache Kafka を使った Spark 構造化ストリーミングに関するドキュメントを参照してください。For an example that uses newer Spark streaming features, see the Spark Structured Streaming with Apache Kafka document.

クラスターの作成Create the clusters

HDInsight 上の Apache Kafka では、パブリック インターネット経由の Kafka ブローカーへのアクセスは提供されません。Apache Kafka on HDInsight doesn't provide access to the Kafka brokers over the public internet. Kafka と通信するすべてのものは、Kafka クラスター内のノードと同じ Azure 仮想ネットワークに存在している必要があります。Anything that talks to Kafka must be in the same Azure virtual network as the nodes in the Kafka cluster. この例では、Kafka クラスターと Spark クラスターの両方を Azure 仮想ネットワーク内に配置します。For this example, both the Kafka and Spark clusters are located in an Azure virtual network. 次の図に、クラスター間の通信フローを示します。The following diagram shows how communication flows between the clusters:

Azure 仮想ネットワークにおける Spark クラスターと Kafka クラスターの図

注意

Kafka 自体は仮想ネットワーク内の通信に制限されていますが、クラスターの SSH や Ambari などの他のサービスにはインターネット経由でアクセスすることができます。Though Kafka itself is limited to communication within the virtual network, other services on the cluster such as SSH and Ambari can be accessed over the internet. HDInsight で使用できるパブリック ポートの詳細については、「HDInsight で使用されるポートと URI」を参照してください。For more information on the public ports available with HDInsight, see Ports and URIs used by HDInsight.

Azure 仮想ネットワーク、Kafka、および Spark クラスターは手動で作成できますが、Azure Resource Manager テンプレートを使用する方が簡単です。While you can create an Azure virtual network, Kafka, and Spark clusters manually, it's easier to use an Azure Resource Manager template. 次の手順に従って、Azure 仮想ネットワーク、Kafka クラスター、および Spark クラスターを Azure サブスクリプションにデプロイします。Use the following steps to deploy an Azure virtual network, Kafka, and Spark clusters to your Azure subscription.

  1. 次のボタンを使用して Azure にサインインし、Azure Portal でテンプレートを開きます。Use the following button to sign in to Azure and open the template in the Azure portal.

    Deploy to Azure button for new cluster

    Azure Resource Manager テンプレートは、 https://hditutorialdata.blob.core.windows.net/armtemplates/create-linux-based-kafka-spark-cluster-in-vnet-v4.1.json にあります。The Azure Resource Manager template is located at https://hditutorialdata.blob.core.windows.net/armtemplates/create-linux-based-kafka-spark-cluster-in-vnet-v4.1.json.

    警告

    HDInsight で Kafka の可用性を保証するには、クラスターに少なくとも 3 つのワーカー ノードが必要です。To guarantee availability of Kafka on HDInsight, your cluster must contain at least three worker nodes. このテンプレートは、3 つのワーカー ノードが含まれる Kafka クラスターを作成します。This template creates a Kafka cluster that contains three worker nodes.

    このテンプレートは、Kafka と Spark の両方の HDInsight 3.6 クラスターを作成します。This template creates an HDInsight 3.6 cluster for both Kafka and Spark.

  2. 以下の情報を使用して、 [カスタム デプロイ] セクションに各エントリを入力します。Use the following information to populate the entries on the Custom deployment section:

    プロパティProperty Value
    Resource groupResource group グループを作成するか、または既存のグループを選択します。Create a group or select an existing one.
    LocationLocation 地理的に近い場所を選択します。Select a location geographically close to you.
    [Base Cluster Name] (ベース クラスター名)Base Cluster Name この値は、Spark クラスターと Kafka クラスターのベース名として使用されます。This value is used as the base name for the Spark and Kafka clusters. たとえば、「hdistreaming」と入力すると、spark-hdistreaming という名前の Spark クラスターと、kafka-hdistreaming という名前の Kafka クラスターが作成されます。For example, entering hdistreaming creates a Spark cluster named spark-hdistreaming and a Kafka cluster named kafka-hdistreaming.
    [Cluster Login User Name](クラスター ログイン ユーザー名)Cluster Login User Name Spark クラスターと Kafka クラスターの管理者のユーザー名。The admin user name for the Spark and Kafka clusters.
    [クラスター ログイン パスワード]Cluster Login Password Spark クラスターと Kafka クラスターの管理者のユーザー パスワード。The admin user password for the Spark and Kafka clusters.
    [SSH ユーザー名]SSH User Name Spark クラスターと Kafka クラスターの作成に使用する SSH ユーザー。The SSH user to create for the Spark and Kafka clusters.
    [SSH パスワード]SSH Password Spark クラスターと Kafka クラスター用の SSH ユーザーのパスワード。The password for the SSH user for the Spark and Kafka clusters.

    HDInsight カスタム デプロイ パラメーター

  3. 使用条件を読み、 [上記の使用条件に同意する] をオンにします。Read the Terms and Conditions, and then select I agree to the terms and conditions stated above.

  4. 最後に、 [購入] を選択します。Finally, select Purchase. クラスターの作成には約 20 分かかります。It takes about 20 minutes to create the clusters.

リソースが作成されると、概要ページが表示されます。Once the resources have been created, a summary page appears.

vnet とクラスターのリソース グループ概要

重要

各 HDInsight クラスターの名前が spark-BASENAME および kafka-BASENAME であることに注目してください。BASENAME はテンプレートで指定した名前です。Notice that the names of the HDInsight clusters are spark-BASENAME and kafka-BASENAME, where BASENAME is the name you provided to the template. これらの名前は、後の手順でクラスターに接続するときに使用します。You use these names in later steps when connecting to the clusters.

ノートブックを使用するUse the notebooks

このドキュメントで説明した例のコードは、https://github.com/Azure-Samples/hdinsight-spark-scala-kafka で入手できます。The code for the example described in this document is available at https://github.com/Azure-Samples/hdinsight-spark-scala-kafka.

クラスターを削除するDelete the cluster

警告

HDInsight クラスターの料金は、そのクラスターを使用しているかどうかに関係なく、分単位で課金されます。Billing for HDInsight clusters is prorated per minute, whether you use them or not. 使用後は、クラスターを必ず削除してください。Be sure to delete your cluster after you finish using it. HDInsight クラスターを削除する方法」をご覧ください。See how to delete an HDInsight cluster.

このドキュメントの手順では両方のクラスターを同じ Azure リソース グループに作成したため、Azure Portal でこのリソース グループを削除するだけで済みます。Since the steps in this document create both clusters in the same Azure resource group, you can delete the resource group in the Azure portal. グループを削除することにより、このドキュメントに従って作成したすべてのリソース、Azure Virtual Network、クラスターで使用したストレージ アカウントが削除されます。Deleting the group removes all resources created by following this document, the Azure Virtual Network, and storage account used by the clusters.

次の手順Next steps

この例では、Spark を使用して Kafka に対するデータの読み取りと書き込みを行う方法について説明しました。In this example, you learned how to use Spark to read and write to Kafka. 次のリンクを使用することで、Kafka のその他の活用方法を知ることができます。Use the following links to discover other ways to work with Kafka: