Usare Spark e Kafka in HDInsight

Completato

In qualità di ingegnere dei dati, si deve determinare il tipo di cluster HDInsight più appropriato per le esigenze di compilazione di una soluzione. I cluster Spark e Kafka, se usati insieme, offrono un'ottima soluzione per inserire ed elaborare flussi di dati in tempo reale o quasi in tempo reale.

Usare Kafka per inserire dati in tempo reale

Apache Kafka può essere usato come sistema di messaggistica, come sistema di sottoscrizione di pubblicazione o come piattaforma di elaborazione dei dati di streaming. Archivia i dati in un log che può essere letto in tempo reale, post-elaborato e anche letto da più utenti contemporaneamente.

Usare Spark Structured Streaming per elaborare gli eventi in tempo reale

Apache Spark è un motore di elaborazione dati distribuito open source che può essere usato in molte circostanze per elaborare, analizzare e trasformare i dati ed eseguirvi query in modo rapido su larga scala. Spark è comunemente usato per l'esecuzione di processi ETL e SQL su Big Data, l'elaborazione di dati di streaming e l'esecuzione di processi di apprendimento automatico.

La tecnologia Spark Structured Streaming include funzionalità che non sono disponibili su altre piattaforme, ad esempio garanzie di tolleranza di errore, unione di dati in batch e in streaming, possibilità di gestire dati arrivati in ritardo e molto altro ancora, come si vedrà più avanti in questo modulo. Con Azure HDInsight è anche possibile creare una rete virtuale che ospita entrambi i cluster Spark e Kafka. In questo modo, il cluster Spark può accedere a singole partizioni di dati all'interno del cluster Kafka, anziché comunicare attraverso cluster o endpoint. Consentendo l'accesso a singole partizioni di dati, si aumenta il parallelismo disponibile nel processo di elaborazione in tempo reale, con un conseguente miglioramento della velocità effettiva.

Scenari per l'uso di Kafka con Spark

Esistono molti scenari di analisi in tempo reale che possono trarre vantaggio dallo streaming in tempo reale abilitato da Apache Kafka e Spark. Tutti questi scenari includono un componente di inserimento dei dati in streaming, ovvero il componente Kafka, e un processo di analisi in esecuzione sui dati, ovvero il componente Spark.

Scenarios for using Kafka with Spark

  • Rilevamento delle frodi in tempo reale, in cui si inseriscono i dati delle transazioni finanziarie e si confrontano con i modelli cronologici di comportamento fraudolento.
  • Gestione dei parchi auto e delle auto connesse, in cui si inseriscono i dati dei dispositivi IoT e si reagisce in base ai dati dei sensori, ad esempio quando il chilometraggio, la velocità, la posizione o la temperatura raggiungono una determinata soglia.
  • Analisi clickstream su soluzioni di e-commerce, per analizzare il modo in cui il posizionamento dei prodotti nelle pagine può influenzare gli acquisti d'impulso e i click-through.
  • Monitoraggio dei pazienti in tempo reale, per controllare la pressione sanguigna e le informazioni sulla frequenza cardiaca e informare i medici quando un paziente è in uno stato critico.
  • Soluzioni di rete intelligente che controllano il consumo di elettricità e rispondono alle variazione della domanda.
  • Comportamento dei clienti nei negozi, per scoprire quali acquisti vengono effettuati in determinati orari e, di conseguenza, pianificare il rifornimento degli scaffali e adeguare la disponibilità di personale alle casse.
  • Monitoraggio dell'infrastruttura IT e della rete, per controllare la disponibilità e la larghezza di banda dei server e reindirizzare il traffico, quando necessario.
  • Gestione delle scorte e della domanda in tempo reale, per controllare i livelli delle scorte e predisporre tempestivamente il riordino e il rifornimento degli articoli.

Migrazione semplificata dall'elaborazione da batch a streaming

In molti casi, questi scenari iniziano con un'elaborazione dei dati in batch ma, con l'evolversi delle soluzioni, l'elaborazione in batch cede il passo all'elaborazione in streaming e le applicazioni locali vengono trasferite nel cloud. Come indicato sopra, Spark Structured Streaming è una tecnologia esclusiva, che si distingue per la capacità di gestire i processi in batch e in streaming, semplificando la transizione dei processi in batch a quelli in tempo reale, poiché è possibile passare dall'uno all'altro oppure eseguirli contemporaneamente, usando le stesse applicazioni e gli stessi framework.