Esempio dello streaming Apache Spark (DStream) con Kafka (anteprima) in 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. Questo esempio usa un server Jupyter notebook che viene eseguito nel cluster di Spark.

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. 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.

Al termine della procedura descritta in questo documento, eliminare i cluster per evitare costi supplementari.

Creare i cluster

Apache Kafka in HDInsight non fornisce l'accesso ai broker Kafka tramite Internet pubblico. Tutto ciò che comunica con Kafka deve trovarsi nella stessa rete virtuale di Azure dei nodi del cluster Kafka. Per questo esempio, i cluster Spark e Kafka si trovano entrambi in una rete virtuale di Azure. Il diagramma seguente illustra il flusso delle comunicazioni tra i cluster:

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. Per altre informazioni sulle porte pubbliche disponibili con HDInsight, vedere Porte e URI usati da 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. Seguire questa procedura per distribuire cluster Spark e Kafka e una rete virtuale di Azure nella sottoscrizione di Azure.

  1. Usare il pulsante seguente per accedere ad Azure e aprire il modello nel portale di Azure.

    Deploy to Azure

    Il modello di Azure Resource Manager è disponibile all'indirizzo https://hditutorialdata.blob.core.windows.net/armtemplates/create-linux-based-kafka-spark-cluster-in-vnet-v2.1.json.

    Avviso

    Per garantire la disponibilità di Kafka in HDInsight, il cluster deve contenere almeno tre nodi del ruolo di lavoro. Questo modello crea un cluster Kafka contenente tre nodi di lavoro.

    Questo modello crea un cluster HDInsight 3.6 sia per Kafka che per Spark.

  2. Usare le informazioni seguenti per popolare le voci nel pannello Distribuzione personalizzata:

    Distribuzione personalizzata di HDInsight

    • Gruppo di risorse: creare un gruppo o selezionarne uno esistente. Questo gruppo contiene il cluster HDInsight.

    • Località: scegliere una località geograficamente vicina.

    • Base Cluster Name (Nome di base del cluster): questo valore viene usato come nome di base per i cluster Spark e Kafka. Ad esempio, se si immette hdi viene creato un cluster Spark denominato spark-hdi e un cluster Kafka denominato kafka-hdi.

    • Cluster Login User Name (Nome utente di accesso del cluster): nome utente amministratore per i cluster Spark e Kafka.

    • Cluster Login Password (Password di accesso del cluster): password amministratore per i cluster Spark e Kafka.

    • SSH User Name (Nome utente SSH): utente SSH da creare per i cluster Spark e Kafka.

    • SSH Password (Password SSH): password dell'utente SSH per i cluster Spark e Kafka.

  3. Leggere le Condizioni e quindi selezionare Accetto le condizioni riportate sopra.

  4. Selezionare infine Aggiungi al dashboard e quindi Acquista. La creazione dei cluster richiede circa 20 minuti.

Dopo aver creato le risorse, si viene reindirizzati a un pannello del gruppo di risorse che contiene i cluster e il dashboard Web.

Pannello 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. Questi nomi verranno usati nei passaggi successivi per la connessione ai cluster.

Usare i notebook

Il codice per l'esempio illustrato in questo documento è disponibile all'indirizzo https://github.com/Azure-Samples/hdinsight-spark-scala-kafka.

Seguire i passaggi nel file README.md per completare questo esempio.

Eliminazione del cluster

Avviso

La fatturazione dei cluster HDInsight viene calcolata al minuto, indipendentemente dal fatto che siano in uso o meno. Assicurarsi di eliminare il cluster dopo aver finito di usarlo. Per altre informazioni, vedere l'articolo su come eliminare un cluster HDInsight.

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. 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.

Passaggi successivi

Questo esempio ha illustrato l'uso di Spark per leggere e scrivere in Kafka. Per trovare altri modi per lavorare con Kafka, vedere i collegamenti seguenti: