Esempio dello streaming Apache Spark (DStream) con Kafka in HDInsightApache Spark streaming (DStream) example with Kafka on HDInsight

Informazioni su come è possibile usare Apache Spark per trasmettere dati in streaming all'interno o all'esterno di Apache Kafka su HDInsight per mezzo di DStreams.Learn how to use Spark Apache Spark to stream data into or out of Apache Kafka on HDInsight using DStreams. Questo esempio usa un server Jupyter notebook che viene eseguito nel cluster di Spark.This example uses a Jupyter notebook that runs on the Spark cluster.

Nota

La procedura descritta in questo documento permette di creare un gruppo di risorse di Azure che contiene sia un cluster Spark in HDInsight che un cluster Kafka in HDInsight.The steps in this document create an Azure resource group that contains both a Spark on HDInsight and a Kafka on HDInsight cluster. Entrambi questi cluster si trovano all'interno di una rete virtuale di Azure, che consente al cluster Spark di comunicare direttamente con il cluster Kafka.These clusters are both located within an Azure Virtual Network, which allows the Spark cluster to directly communicate with the Kafka cluster.

Al termine della procedura descritta in questo documento, eliminare i cluster per evitare costi supplementari.When you are done with the steps in this document, remember to delete the clusters to avoid excess charges.

Importante

In questo esempio viene usata la tecnologia DStreams, una tecnologia di streaming Spark meno recente.This example uses DStreams, which is an older Spark streaming technology. Per un esempio con funzionalità di streaming Spark più recenti, vedere il documento Streaming strutturato Spark con Kafka.For an example that uses newer Spark streaming features, see the Spark Structured Streaming with Kafka document.

Creare i clusterCreate the clusters

Apache Kafka in HDInsight non fornisce l'accesso ai broker Kafka tramite Internet pubblico.Apache Kafka on HDInsight does not provide access to the Kafka brokers over the public internet. Tutto ciò che comunica con Kafka deve trovarsi nella stessa rete virtuale di Azure dei nodi del cluster Kafka.Anything that talks to Kafka must be in the same Azure virtual network as the nodes in the Kafka cluster. Per questo esempio, i cluster Spark e Kafka si trovano entrambi in una rete virtuale di Azure.For this example, both the Kafka and Spark clusters are located in an Azure virtual network. Il diagramma seguente illustra il flusso delle comunicazioni tra i cluster:The following diagram shows how communication flows between the clusters:

Diagramma dei cluster Spark e Kafka in una rete virtuale di Azure

Nota

Anche se Kafka è limitato alle comunicazioni all'interno della rete virtuale, è possibile accedere ad altri servizi del cluster tramite Internet, ad esempio SSH e 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. Per altre informazioni sulle porte pubbliche disponibili con HDInsight, vedere Porte e URI usati da HDInsight.For more information on the public ports available with HDInsight, see Ports and URIs used by HDInsight.

Anche se è possibile creare manualmente cluster Spark e Kafka e una rete virtuale di Azure, è più semplice usare un modello di 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. Seguire questa procedura per distribuire cluster Spark e Kafka e una rete virtuale di Azure nella sottoscrizione di Azure.Use the following steps to deploy an Azure virtual network, Kafka, and Spark clusters to your Azure subscription.

  1. Usare il pulsante seguente per accedere ad Azure e aprire il modello nel portale di Azure.Use the following button to sign in to Azure and open the template in the Azure portal.

    Deploy to Azure

    Il modello di Azure Resource Manager è disponibile su 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.

    Avviso

    Per garantire la disponibilità di Kafka in HDInsight, il cluster deve contenere almeno tre nodi del ruolo di lavoro.To guarantee availability of Kafka on HDInsight, your cluster must contain at least three worker nodes. Questo modello crea un cluster Kafka contenente tre nodi di lavoro.This template creates a Kafka cluster that contains three worker nodes.

    Questo modello crea un cluster HDInsight 3.6 sia per Kafka che per Spark.This template creates an HDInsight 3.6 cluster for both Kafka and Spark.

  2. Usare le informazioni seguenti per popolare le voci nel pannello Distribuzione personalizzata:Use the following information to populate the entries on the Custom deployment section:

    Distribuzione personalizzata di HDInsight

    • Gruppo di risorse: creare un gruppo o selezionarne uno esistente.Resource group: Create a group or select an existing one. Questo gruppo contiene il cluster HDInsight.This group contains the HDInsight cluster.

    • Località: scegliere una località geograficamente vicina.Location: Select a location geographically close to you.

    • Base Cluster Name (Nome di base del cluster): questo valore viene usato come nome di base per i cluster Spark e Kafka.Base Cluster Name: This value is used as the base name for the Spark and Kafka clusters. Ad esempio, se si immette hdi viene creato un cluster Spark denominato spark-hdi e un cluster Kafka denominato kafka-hdi.For example, entering hdi creates a Spark cluster named spark-hdi and a Kafka cluster named kafka-hdi.

    • Cluster Login User Name (Nome utente di accesso del cluster): nome utente amministratore per i cluster Spark e Kafka.Cluster Login User Name: The admin user name for the Spark and Kafka clusters.

    • Cluster Login Password (Password di accesso del cluster): password amministratore per i cluster Spark e Kafka.Cluster Login Password: The admin user password for the Spark and Kafka clusters.

    • SSH User Name (Nome utente SSH): utente SSH da creare per i cluster Spark e Kafka.SSH User Name: The SSH user to create for the Spark and Kafka clusters.

    • SSH Password (Password SSH): password dell'utente SSH per i cluster Spark e Kafka.SSH Password: The password for the SSH user for the Spark and Kafka clusters.

  3. Leggere le Condizioni e quindi selezionare Accetto le condizioni riportate sopra.Read the Terms and Conditions, and then select I agree to the terms and conditions stated above.

  4. Selezionare infine Aggiungi al dashboard e quindi Acquista.Finally, check Pin to dashboard and then select Purchase. La creazione dei cluster richiede circa 20 minuti.It takes about 20 minutes to create the clusters.

Dopo avere create le risorse, verrà visualizzata una pagina di riepilogo.Once the resources have been created, a summary page appears.

Riepilogo del gruppo di risorse per la rete virtuale e i cluster

Importante

Si noti che i nomi dei cluster HDInsight sono spark-BASENAME e kafka-BASENAME, dove BASENAME è il nome specificato per il modello.Notice that the names of the HDInsight clusters are spark-BASENAME and kafka-BASENAME, where BASENAME is the name you provided to the template. Questi nomi verranno usati nei passaggi successivi per la connessione ai cluster.You use these names in later steps when connecting to the clusters.

Usare i notebookUse the notebooks

Il codice per l'esempio illustrato in questo documento è disponibile all'indirizzo 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.

Per completare questo esempio, seguire i passaggi nel file README.md.To complete this example, follow the steps in the README.md.

Eliminazione del clusterDelete the cluster

Avviso

La fatturazione dei cluster HDInsight viene calcolata al minuto, indipendentemente dal fatto che siano in uso o meno.Billing for HDInsight clusters is prorated per minute, whether you are using them or not. Assicurarsi di eliminare il cluster dopo aver finito di usarlo.Be sure to delete your cluster after you have finished using it. Per altre informazioni, vedere l'articolo su come eliminare un cluster HDInsight.For more information, see How to delete an HDInsight cluster.

Le procedure illustrate in questo documento creano entrambi i cluster nello stesso gruppo di risorse di Azure. È quindi possibile eliminare il gruppo di risorse dal portale di Azure.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. In questo modo vengono rimosse tutte le risorse create seguendo le istruzioni di questo documento, la rete virtuale di Azure e l'account di archiviazione usato dai cluster.Deleting the group removes all resources created by following this document, the Azure Virtual Network, and storage account used by the clusters.

Passaggi successiviNext steps

Questo esempio ha illustrato l'uso di Spark per leggere e scrivere in Kafka.In this example, you learned how to use Spark to read and write to Kafka. Per trovare altri modi per lavorare con Kafka, vedere i collegamenti seguenti:Use the following links to discover other ways to work with Kafka: