Beispiel für Apache Spark-Streaming (DStream) mit Apache Kafka in HDInsightApache Spark streaming (DStream) example with Apache Kafka on HDInsight

Erfahren Sie, wie Sie Apache Spark verwenden, um Daten mithilfe von DStreams in oder aus Apache Kafka in HDInsight zu streamen.Learn how to use Apache Spark to stream data into or out of Apache Kafka on HDInsight using DStreams. In diesem Beispiel wird ein auf dem Spark-Cluster ausgeführtes Jupyter Notebook verwendet.This example uses a Jupyter Notebook that runs on the Spark cluster.

Hinweis

Mit den in diesem Dokument beschriebenen Schritten wird eine Azure-Ressourcengruppe erstellt, die jeweils einen Spark- und einen Kafka-Cluster in HDInsight beinhaltet.The steps in this document create an Azure resource group that contains both a Spark on HDInsight and a Kafka on HDInsight cluster. Die Cluster befinden sich innerhalb eines virtuellen Azure-Netzwerks, wodurch Spark- und Kafka-Cluster direkt miteinander kommunizieren können.These clusters are both located within an Azure Virtual Network, which allows the Spark cluster to directly communicate with the Kafka cluster.

Denken Sie nach dem Ausführen der Schritte in diesem Dokument daran, die Cluster zu löschen, um das Anfallen von Gebühren zu verhindern.When you are done with the steps in this document, remember to delete the clusters to avoid excess charges.

Wichtig

Dieses Beispiel verwendet DStreams, also eine ältere Spark-Streamingtechnologie.This example uses DStreams, which is an older Spark streaming technology. Ein Beispiel, das neuere Spark-Streamingfeatures verwendet, finden Sie im Dokument Verwenden von strukturiertem Spark-Streaming mit Apache Kafka in HDInsight.For an example that uses newer Spark streaming features, see the Spark Structured Streaming with Apache Kafka document.

Erstellen von ClusternCreate the clusters

Apache Kafka in HDInsight ermöglicht keinen Zugriff auf die Kafka-Broker über das öffentliche Internet.Apache Kafka on HDInsight does not provide access to the Kafka brokers over the public internet. Komponenten, die mit Kafka kommunizieren, müssen sich jeweils im selben virtuellen Azure-Netzwerk befinden wie die Knoten im Kafka-Cluster.Anything that talks to Kafka must be in the same Azure virtual network as the nodes in the Kafka cluster. Für dieses Beispiel sind die Kafka- und Spark-Cluster in einem virtuellen Azure-Netzwerk angeordnet.For this example, both the Kafka and Spark clusters are located in an Azure virtual network. Im folgenden Diagramm ist dargestellt, wie der Kommunikationsfluss zwischen den Clustern abläuft:The following diagram shows how communication flows between the clusters:

Diagramm der Spark- und Kafka-Cluster in einem virtuellen Azure-Netzwerk

Hinweis

Kafka selbst ist zwar auf die Kommunikation innerhalb des virtuellen Netzwerks beschränkt, aber auf andere Dienste im Cluster, z.B. SSH und Ambari, kann über das Internet zugegriffen werden.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. Weitere Informationen zu den öffentlichen Ports, die für HDInsight verfügbar sind, finden Sie unter Von HDInsight verwendete Ports und URIs.For more information on the public ports available with HDInsight, see Ports and URIs used by HDInsight.

Es ist zwar möglich, ein virtuelles Azure-Netzwerk, einen Kafka-Cluster und einen Spark-Cluster manuell zu erstellen, aber mit einer Azure Resource Manager-Vorlage ist dies erheblich einfacher.While you can create an Azure virtual network, Kafka, and Spark clusters manually, it's easier to use an Azure Resource Manager template. Führen Sie die folgenden Schritte aus, um ein virtuelles Azure-Netzwerk, Kafka- und Spark-Cluster für Ihr Azure-Abonnement bereitzustellen.Use the following steps to deploy an Azure virtual network, Kafka, and Spark clusters to your Azure subscription.

  1. Verwenden Sie die folgende Schaltfläche, um sich bei Azure anzumelden, und öffnen Sie die Vorlage im Azure-Portal.Use the following button to sign in to Azure and open the template in the Azure portal.

    Deploy to Azure

    Die Azure Resource Manager-Vorlage finden Sie unter 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.

    Warnung

    Um die Verfügbarkeit von Kafka in HDInsight zu gewährleisten, muss der Cluster mindestens drei Workerknoten enthalten.To guarantee availability of Kafka on HDInsight, your cluster must contain at least three worker nodes. Diese Vorlage erstellt einen Kafka-Cluster, der drei Workerknoten enthält.This template creates a Kafka cluster that contains three worker nodes.

    Mit dieser Vorlage wird ein HDInsight 3.6-Cluster für Kafka und Spark erstellt.This template creates an HDInsight 3.6 cluster for both Kafka and Spark.

  2. Verwenden Sie die folgenden Informationen, um die Einträge auf dem Abschnitt Benutzerdefinierte Bereitstellung aufzufüllen:Use the following information to populate the entries on the Custom deployment section:

    Benutzerdefinierte HDInsight-Bereitstellung

    • Ressourcengruppe: Erstellen Sie eine Gruppe, oder wählen Sie eine vorhandene Gruppe aus.Resource group: Create a group or select an existing one. Diese Gruppe enthält den HDInsight-Cluster.This group contains the HDInsight cluster.

    • Standort: Wählen Sie einen Standort in Ihrer Nähe aus.Location: Select a location geographically close to you.

    • Basisclustername: Dieser Wert wird als Basisname für Spark- und Kafka-Cluster verwendet.Base Cluster Name: This value is used as the base name for the Spark and Kafka clusters. Wenn Sie beispielsweise hdistreaming eingeben, werden ein Spark-Cluster mit dem Namen spark-hdistreaming und ein Kafka-Cluster mit dem Namen kafka-hdistreaming erstellt.For example, entering hdistreaming creates a Spark cluster named spark-hdistreaming and a Kafka cluster named kafka-hdistreaming.

    • Benutzername für Clusteranmeldung: Der Administratorbenutzername für die Spark- und Kafka-Cluster.Cluster Login User Name: The admin user name for the Spark and Kafka clusters.

    • Kennwort für Clusteranmeldung: Das Administratorbenutzerkennwort für die Spark- und Kafka-Cluster.Cluster Login Password: The admin user password for the Spark and Kafka clusters.

    • SSH-Benutzername: SSH-Benutzer, der für die Spark- und Kafka-Cluster erstellt wird.SSH User Name: The SSH user to create for the Spark and Kafka clusters.

    • SSH-Kennwort: Kennwort für den SSH-Benutzer für die Spark- und Kafka-Cluster.SSH Password: The password for the SSH user for the Spark and Kafka clusters.

  3. Lesen Sie die Geschäftsbedingungen, und wählen Sie anschließend die Option Ich stimme den oben genannten Geschäftsbedingungen zu.Read the Terms and Conditions, and then select I agree to the terms and conditions stated above.

  4. Wählen Sie abschließend Kaufen aus.Finally, select Purchase. Das Erstellen der Cluster dauert ca. 20 Minuten.It takes about 20 minutes to create the clusters.

Sobald die Ressourcen erstellt wurden, wird eine Zusammenfassungsseite angezeigt.Once the resources have been created, a summary page appears.

Ressourcengruppenzusammenfassung für VNET und Cluster

Wichtig

Beachten Sie, dass die Namen der HDInsight-Cluster spark-BASENAME und kafka-BASENAME lauten, wobei BASENAME der Name ist, den Sie für die Vorlage angegeben haben.Notice that the names of the HDInsight clusters are spark-BASENAME and kafka-BASENAME, where BASENAME is the name you provided to the template. Sie verwenden diese Namen in späteren Schritten, wenn Sie eine Verbindung mit den Clustern herstellen.You use these names in later steps when connecting to the clusters.

Verwenden der NotebooksUse the notebooks

Den Code für das in diesem Dokument beschriebene Beispiel finden Sie unter 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.

Führen Sie die Schritte in der Datei README.md aus, um dieses Beispiel durchzuführen.To complete this example, follow the steps in the README.md.

Löschen des ClustersDelete the cluster

Warnung

Die Abrechnung für die HDInsight-Cluster erfolgt anteilsmäßig auf Minutenbasis und ist unabhängig von der Verwendung.Billing for HDInsight clusters is prorated per minute, whether you use them or not. Daher sollten Sie Ihren Cluster nach der Verwendung unbedingt wieder löschen.Be sure to delete your cluster after you finish using it. Sehen Sie sich die Informationen zum Löschen eines HDInsight-Clusters an.See how to delete an HDInsight cluster.

Da mit den Schritten in diesem Dokument beide Cluster in derselben Azure-Ressourcengruppe erstellt werden, können Sie die Ressourcengruppe im Azure-Portal löschen.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. Durch das Löschen der Gruppe werden alle beim Durcharbeiten dieses Dokuments erstellten Ressourcen sowie das virtuelle Azure-Netzwerk und das von den Clustern verwendete Speicherkonto entfernt.Deleting the group removes all resources created by following this document, the Azure Virtual Network, and storage account used by the clusters.

Nächste SchritteNext steps

In diesem Beispiel haben Sie erfahren, wie Spark verwendet wird, um in Kafka Lese- und Schreibvorgänge auszuführen.In this example, you learned how to use Spark to read and write to Kafka. Verwenden Sie die folgenden Links, um weitere Möglichkeiten zur Arbeit mit Kafka kennenzulernen:Use the following links to discover other ways to work with Kafka: