Tutorial di streaming Apache Spark per principianti: lavoro, architettura e funzionalità

Pubblicato: 2020-02-27

Attualmente viviamo in un mondo in cui una grande quantità di dati viene generata ogni secondo a una velocità elevata. Questi dati possono fornire risultati significativi e utili se analizzati accuratamente. Può anche offrire soluzioni a molti settori al momento giusto.

Questi sono molto utili in settori come servizi di viaggio, vendita al dettaglio, media, finanza e assistenza sanitaria. Molte altre aziende leader hanno adottato l'analisi dei dati come il monitoraggio dell'interazione del cliente con diversi tipi di prodotti svolto da Amazon sulla sua piattaforma o gli spettatori che ricevono consigli personalizzati in tempo reale, forniti da Netflix.

Può essere utilizzato da qualsiasi azienda che utilizza una grande quantità di dati e può analizzarla a proprio vantaggio per migliorare il processo generale della propria attività e aumentare la soddisfazione dei clienti e le esperienze degli utenti. Migliori esperienze utente e soddisfazione del cliente forniscono vantaggi all'organizzazione, a lungo termine, per espandere l'attività e realizzare un profitto.

Sommario

Cos'è lo streaming?

Lo streaming di dati è un metodo in cui le informazioni vengono trasferite come un flusso continuo e costante. Con la crescita di Internet, aumentano anche le tecnologie di streaming.

Cos'è Spark Streaming?

Quando i dati arrivano continuamente in una sequenza di non associati, viene chiamato flusso di dati. I dati di input fluiscono costantemente e sono divisi in streaming. L'ulteriore elaborazione dei dati viene eseguita dopo che sono stati suddivisi in unità discrete. L'analisi dei dati e l'elaborazione dei dati a bassa latenza è chiamata elaborazione del flusso.

Nel 2013, Apache Spark è stato aggiunto con Spark Streaming. Esistono molte fonti da cui può avvenire l'importazione dei dati come TCP Sockets, Amazon Kinesis, Apache Flume e Kafka. Con l'aiuto di sofisticati algoritmi, l'elaborazione dei dati viene eseguita. Una funzione di alto livello come finestra, unione, riduzione e mappa viene utilizzata per esprimere l'elaborazione. Dashboard live, database e file system vengono utilizzati per inviare i dati elaborati ai file system.

Funzionamento del flusso

Di seguito le lavorazioni interne. Lo streaming Spark divide i flussi di dati di input in tempo reale in batch. Spark Engine viene utilizzato per elaborare questi batch per generare di conseguenza batch di flussi finali.

I dati nel flusso sono divisi in piccoli batch e sono rappresentati da Apache Spark Discretized Stream (Spark DStream). Spark RDDs viene utilizzato per creare DStream e questa è l'astrazione dei dati principali di Spark. Qualsiasi componente di Apache Spark come Spark SQL e Spark MLib può essere facilmente integrato con Spark Streaming senza problemi.

Spark Streaming aiuta a ridimensionare i flussi di dati in tempo reale. È una delle estensioni dell'API Spark principale. Consente inoltre l'elaborazione di flussi tolleranti agli errori e throughput elevato. L'uso di Spark Streaming esegue l'elaborazione e lo streaming in tempo reale di dati in tempo reale. Le principali aziende leader nel mondo utilizzano il servizio di Spark Streaming come Pinterest, Netflix e Uber.

Spark Streaming fornisce anche un'analisi dei dati in tempo reale. L'elaborazione dei dati in tempo reale e veloce viene eseguita sull'unica piattaforma di Spark Streaming.

Leggi anche Architettura Apache Spark

Perché Spark Streaming?

Spark Streaming può essere utilizzato per eseguire lo streaming di dati in tempo reale da diverse fonti, come Facebook, mercato azionario e sistemi geografici, e condurre potenti analisi per incoraggiare le aziende.

Ci sono cinque aspetti significativi di Spark Streaming che lo rendono così unico e sono:

1. Integrazione

Librerie avanzate come elaborazione di grafici, apprendimento automatico e SQL possono essere facilmente integrate con esso.

2. Combinazione

I dati che vengono trasmessi in streaming possono essere eseguiti insieme a query interattive e anche set di dati statici.

3. Bilanciamento del carico

Spark Streaming ha un perfetto bilanciamento del carico, il che lo rende molto speciale.

4. Utilizzo delle risorse

Spark Streaming utilizza le risorse disponibili in modo ottimale.

5. Recupero da ritardatari e fallimenti

Spark Streaming può recuperare rapidamente da qualsiasi tipo di errore o ritardo.

Necessità di streaming in Apache Spark

Il modello operatore continuo viene utilizzato durante la progettazione del sistema per l'elaborazione dei flussi tradizionalmente per elaborare i dati. Il funzionamento del sistema è il seguente:

  1. Le origini dati vengono utilizzate per lo streaming dei dati. I diversi tipi di origini dati sono dispositivi IoT, dati di telemetria di sistema, registri in tempo reale e molti altri. Questi dati in streaming vengono inseriti in sistemi di acquisizione dati come Amazon Kinesis, Apache Kafka e molti altri.
  2. In un cluster, l'elaborazione parallela viene eseguita sui dati.
  3. Per passare i risultati vengono utilizzati sistemi a valle come Kafka, Cassandra, HBase.

Un insieme di nodi di lavoro esegue alcuni operatori continui. L'elaborazione dei record di dati in streaming viene eseguita una alla volta. I documenti vengono poi inoltrati ai prossimi operatori in cantiere.

Gli operatori di origine vengono utilizzati per ricevere i dati dai sistemi di importazione. I Sink Operator sono abituati a fornire output al sistema a valle.

Alcuni operatori sono continui. Questi sono un modello naturale e diretto. Quando si tratta di analisi di dati complessi in tempo reale, che viene eseguita su larga scala, l'architettura tradizionale deve affrontare alcune sfide nel mondo moderno e sono:

Ripristino rapido dei guasti

Nel sistema odierno i guasti vengono rapidamente accompagnati e sistemati dal recupero delle informazioni perse calcolando le informazioni mancanti in nodi paralleli. Pertanto, rende il ripristino ancora più veloce rispetto ai sistemi tradizionali.

Bilanciatore di carico

Il servizio di bilanciamento del carico aiuta ad allocare risorse e dati tra i nodi in modo più efficiente in modo che nessuna risorsa sia in attesa o non faccia nulla ma i dati siano distribuiti uniformemente tra i nodi.

Unificazione di carichi di lavoro interattivi, batch e in streaming

Si può anche interagire con i dati in streaming eseguendo query sui dati in streaming. Può anche essere combinato con set di dati statici. Non è possibile eseguire query ad hoc utilizzando nuovi operatori perché non è progettato per operatori continui. Le query interattive, in streaming e batch possono essere combinate utilizzando un unico motore.

Query SQL e analisi con ML

Lo sviluppo di sistemi con comandi di database comuni ha semplificato la vita degli sviluppatori in collaborazione con altri sistemi. La comunità accetta ampiamente le query SQL. Dove il sistema fornisce moduli e librerie per l'apprendimento automatico che possono essere utilizzati per scopi analitici avanzati.

Panoramica dello streaming di Spark

Spark Streaming utilizza un set di RDD che viene utilizzato per elaborare i dati in tempo reale. Pertanto, Spark Streaming viene generalmente utilizzato comunemente per il trattamento del flusso di dati in tempo reale. Spark Streaming fornisce un'elaborazione a tolleranza d'errore e un'elevata velocità effettiva di flussi di dati in tempo reale. È una funzionalità aggiuntiva fornita con l'API core spark.

Funzionalità di streaming Spark

  1. Analisi aziendale : con l'uso di Spark Streaming, si può anche apprendere il comportamento del pubblico. Questi apprendimenti possono essere successivamente utilizzati nel processo decisionale delle imprese.
  2. Integrazione: l'elaborazione in tempo reale e batch è integrata con Spark
  3. Tolleranza agli errori : l'abilità unica di Spark è che può riprendersi dall'errore in modo efficiente.
  4. Velocità: la bassa latenza è raggiunta da Spark
  5. Ridimensionamento: i nodi possono essere facilmente scalati fino a centinaia da Spark.

Fondamenti di Spark Streaming

1. Contesto di streaming

In Spark il flusso di dati viene consumato e gestito da Streaming Context. Crea un oggetto di Ricevitore che viene prodotto registrando uno streaming di Input. Quindi è la funzionalità principale di Spark che diventa un punto di ingresso critico per il sistema in quanto fornisce molti contesti che forniscono un flusso di lavoro predefinito per diverse fonti come Akka Actor, Twitter e ZeroMQ.

Leggi: Ruolo di Apache Spark nei Big Data e perché è unico

Un oggetto di contesto spark rappresenta la connessione con un cluster spark. Laddove l'oggetto Spark Streaming viene creato da un oggetto StreamingContext, è possibile creare un oggetto SparkContex anche accumulatori, RDD e variabili di trasmissione.

2. Punti di controllo, variabili di trasmissione e accumulatori

Punti di controllo

Checkpoint funziona in modo simile a Checkpoints che memorizza lo stato dei sistemi come nei giochi. Dove, in questo caso, Checkpoints aiuta a ridurre la perdita di risorse e rendere il sistema più resiliente al guasto del sistema. Una metodologia di checkpoint è un modo migliore per tenere traccia e salvare gli stati del sistema in modo che al momento del ripristino possa essere facilmente ritirato.

Variabili di trasmissione

Invece di fornire la copia completa delle attività ai nodi di rete, cattura sempre una variabile di sola lettura che è responsabile del riconoscimento dei nodi di attività diverse presenti e quindi della riduzione dei costi di trasferimento e calcolo da parte dei singoli nodi. Quindi può fornire un set di input significativo in modo più efficiente. Utilizza inoltre algoritmi avanzati per distribuire la variabile broadcast a diversi nodi della rete; così, il costo di comunicazione è ridotto.

Accumulatori

Gli accumulatori sono variabili che possono essere personalizzate per scopi diversi. Ma esistono anche accumulatori già definiti come accumulatori contatore e somma. Ci sono anche accumulatori di tracciamento che tengono traccia di ogni nodo e possono anche essere aggiunte alcune funzionalità extra. Gli accumulatori numerici supportano molte funzioni digitali supportate anche da Spark. Su richiesta dell'utente è anche possibile creare accumulatori personalizzati.

DStream

DStream significa Flusso Discretizzato. Spark Streaming offre l'astrazione necessaria, chiamata Discretized Stream (DStream). DStream è un dato che scorre continuamente. Da una fonte di dati, viene ricevuto DStream. Può anche essere ottenuto da un flusso di dati elaborati. La trasformazione del flusso di input genera un flusso di dati elaborato.

Dopo un intervallo specificato, i dati sono contenuti in un RDD. La serie infinita di RDD rappresenta un DStream.

Memorizzazione nella cache

Gli sviluppatori possono utilizzare DStream per memorizzare nella cache i dati del flusso. Ciò è utile se i dati vengono calcolati più volte in DStream. Può essere ottenuto utilizzando il metodo persist() su un DStream.

La duplicazione dei dati viene eseguita per garantire la sicurezza di avere un sistema resiliente in grado di resistere e guasti nel sistema avendo così la capacità di tollerare guasti nel sistema (come Kafka, Sockets, Flume ecc.)

Vantaggio e architettura dello streaming Spark

L'elaborazione di un flusso di dati alla volta può essere ingombrante a volte; quindi Spark Streaming discretizza i dati in piccoli sottobatch facilmente gestibili. Questo perché i lavoratori Spark ottengono buffer di dati in parallelo accettati dal ricevitore Spark Streaming. E quindi l'intero sistema esegue i lotti in parallelo e quindi accumula i risultati finali. Quindi queste attività brevi vengono elaborate in batch dal motore Spark e i risultati vengono forniti ad altri sistemi.

Nell'architettura Spark Streaming, il calcolo non viene allocato staticamente e caricato su un nodo, ma in base alla località dei dati e alla disponibilità delle risorse. Riduce così i tempi di caricamento rispetto ai precedenti sistemi tradizionali. Da qui l'uso del principio della località dei dati, è anche più facile per il rilevamento dei guasti e il suo ripristino.

I nodi di dati in Spark sono in genere rappresentati da RDD che è il set di dati di distribuzione resiliente.

Obiettivi di Spark Streaming

Di seguito sono riportati gli obiettivi raggiunti dall'architettura Spark.

1. Bilanciamento dinamico del carico

Questa è una delle caratteristiche essenziali di Spark Streaming in cui i flussi di dati vengono allocati dinamicamente dal servizio di bilanciamento del carico, che è responsabile dell'allocazione dei dati e del calcolo delle risorse utilizzando regole specifiche in esso definite. L'obiettivo principale del bilanciamento del carico è bilanciare il carico di lavoro in modo efficiente tra i lavoratori e mettere tutto in parallelo in modo tale che non ci sia spreco di risorse disponibili. E anche responsabile dell'allocazione dinamica delle risorse ai nodi di lavoro nel sistema.

2. Fallimento e recupero

Come nel sistema tradizionale, quando si verifica un errore operativo, l'intero sistema deve ricalcolare quella parte per recuperare le informazioni perse. Ma il problema arriva quando un nodo gestisce tutto questo ripristino e fa attendere il completamento dell'intero sistema. Mentre in Spark le informazioni perse vengono calcolate da altri nodi liberi e riportano il sistema al tracciamento senza alcuna attesa aggiuntiva come nei metodi tradizionali.

Inoltre, l'attività non riuscita viene distribuita uniformemente su tutti i nodi del sistema per ricalcolarla e ripristinarla più rapidamente rispetto al metodo tradizionale.

3. Batch e query interattiva

I set di RDD in Spark sono chiamati per essere DStream in Spark che fornisce una relazione tra carichi di lavoro e batch di streaming. Questi batch sono archiviati nella memoria di Spark, che fornisce un modo efficiente per interrogare i dati presenti in esso.

La parte migliore di Spark è che include un'ampia varietà di librerie che possono essere utilizzate quando richiesto dal sistema spark. Alcuni nomi delle librerie sono MLlib per l'apprendimento automatico, SQL per query di dati, GraphX ​​e Data Frame mentre Dataframe e domande possono essere convertiti in istruzioni SQL equivalenti da DStreams.

4. Prestazioni

Poiché il sistema spark utilizza distribuzioni parallele dell'attività che migliorano la sua capacità di throughput e quindi sfruttando il motore sparks in grado di raggiungere una bassa latenza fino a pochi 100 millisecondi.

Come funziona Spark Streaming?

I dati nel flusso sono divisi in piccoli batch chiamati DStream in Spark Streaming. È una sequenza di RDD internamente. Le API Spark vengono utilizzate da RDDS per elaborare i dati e di conseguenza le spedizioni vengono restituite. L'API di Spark Streaming è disponibile in Python, Java e Scala. Molte funzionalità mancano nell'API Python introdotta di recente in Spark 1.2.

I calcoli con stato sono chiamati uno stato gestito da Spark Streaming in base ai dati in ingresso nel flusso. I dati che fluiscono nel flusso vengono elaborati entro un intervallo di tempo. Questo intervallo di tempo deve essere specificato dallo sviluppatore e deve essere consentito da Spark Streaming. La finestra temporale è l'intervallo di tempo entro il quale il lavoro deve essere completato. La finestra temporale viene aggiornata entro un intervallo di tempo noto anche come intervallo di scorrimento nella finestra.

Fonti di streaming Spark

L'oggetto ricevitore correlato a un DStream di input memorizza i dati ricevuti in Sparks Memory per l'elaborazione.

Lo streaming integrato ha due categorie:

1. Fonte di base

Fonti disponibili in Streaming API, ad esempio Socket Connection e File System.

2. Fonte avanzata

Il livello avanzato delle fonti è Kinesis, Flume & Kafka ecc.

Operazioni in streaming

Esistono due tipi di operazioni supportate da Spark RDDS e sono: -

1. Operazioni di output in Apache Spark

Le operazioni di output vengono utilizzate per inviare i dati del DStream in un sistema esterno come un file system o un database. Output Operations consente ai dati trasformati di essere consumati dai sistemi esterni. Tutte le trasformazioni DStreams vengono effettivamente eseguite dal trigger, che viene eseguito dai sistemi esterni.

Queste sono le attuali operazioni di Output:

foreachRDD(func), [suffix]), saveAsHadoopFiles(prefix, [suffix]), saveAsObjectFiles(prefix, [suffix])”prefix-TIME_IN_MS[.suffix]”, saveAsTextFiles(prefix, print()

Gli RDD eseguono pigramente le operazioni di output. All'interno delle Operazioni DStream di Output, le Azioni RDD vengono eseguite con forza per essere elaborate dei dati ricevuti. L'esecuzione delle operazioni di output viene eseguita una alla volta. Le applicazioni Spark definiscono l'ordine delle prestazioni delle operazioni di output.

2. Trasformazione della scintilla

La trasformazione Spark cambia anche i dati da DStream poiché gli RDD lo supportano in Spark. Proprio come Spark RDD, DStream supporta molte modifiche.

Di seguito sono elencate le operazioni di trasformazione più comuni:

Window(), updateStateByKey(), transform(), [numTasks]), cogroup(otherStream, [numTasks]), join(otherStream, reduceByKey(func, [numTasks]), countByValue(), reduce(), union(otherStream ), count(), repartition(numPartitions), filter(), flatMap(), map().

Conclusione

Nel mondo odierno basato sui dati, gli strumenti per archiviare e analizzare i dati si sono rivelati il ​​fattore chiave per l'analisi e la crescita del business. I big data e gli strumenti e le tecnologie associati hanno dimostrato di essere sempre più richiesti. In quanto tale, Apache Spark ha un ottimo mercato e offre ottime funzionalità a clienti e aziende.

Se sei interessato a saperne di più sui Big Data, dai un'occhiata al nostro PG Diploma in Software Development Specialization nel programma Big Data, progettato per professionisti che lavorano e fornisce oltre 7 casi di studio e progetti, copre 14 linguaggi e strumenti di programmazione, pratiche pratiche workshop, oltre 400 ore di apprendimento rigoroso e assistenza all'inserimento lavorativo con le migliori aziende.

Impara i corsi di sviluppo software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Guida la rivoluzione tecnologica basata sui dati

Oltre 400 ore di apprendimento. 14 Lingue e strumenti. Stato Alumni IIITB.
Programma di certificazione avanzato in Big Data da IIIT Bangalore