Tutorial Apache Spark per principianti: impara Apache Spark con esempi

Pubblicato: 2020-03-26

Sommario

introduzione

I dati sono ovunque, dai registri dei clienti di una piccola startup ai bilanci di una grande multinazionale. Le aziende utilizzano questi dati generati per capire come sta andando la loro attività e dove possono migliorare. Peter Sondergaard, vicepresidente senior di Gartner Research, ha affermato che l'informazione è l'olio per il 21 ° secolo e l'analisi può essere considerata il motore a combustione.

Ma man mano che le aziende crescono, crescono anche i loro clienti, stakeholder, partner commerciali e prodotti. Quindi, la quantità di dati che devono gestire diventa enorme.

Tutti questi dati devono essere analizzati per creare prodotti migliori per i loro clienti. Ma i terabyte di dati prodotti al secondo non possono essere gestiti utilizzando fogli excel e registri. Enormi set di dati possono essere gestiti da strumenti come Apache Spark.

Entreremo nei dettagli del software attraverso un'introduzione ad Apache Spark .

Cos'è Apache Spark?

Apache Spark è un framework di cluster computing open source . È fondamentalmente un sistema di elaborazione dati utilizzato per la gestione di enormi carichi di lavoro di dati e set di dati. Può elaborare rapidamente set di dati di grandi dimensioni e anche distribuire queste attività su più sistemi per alleggerire il carico di lavoro. Ha una semplice API che riduce il carico degli sviluppatori quando vengono sopraffatti dai due termini: elaborazione di big data e calcolo distribuito!

Lo sviluppo di Apache Spark è iniziato come un progetto di ricerca open source presso l'AMPLab di UC Berkeley da Matei Zaharia , che è considerato il fondatore di Spark. Nel 2010, con una licenza BSD, il progetto è stato open source. Successivamente, è diventato un progetto incubato nell'ambito della Apache Software Foundation nel 2013. Questo è diventato uno dei progetti principali dell'azienda nel 2014.

Nel 2015, Spark ha avuto più di 1000 contributori al progetto. Questo lo ha reso uno dei progetti più attivi nella Apache Software Foundation e anche nel mondo dei big data. Dal 2009 oltre 200 aziende supportano questo progetto.

Ma perché tutta questa follia per Spark?

Questo perché Spark è in grado di gestire tonnellate di dati ed elaborarli alla volta. Questi dati possono essere distribuiti su migliaia di server fisici o virtuali connessi. Ha un vasto set di API e librerie che funzionano con diversi linguaggi di programmazione come Python, R, Scala e Java. Supporta lo streaming di dati, attività complicate come l'elaborazione di grafici e anche l'apprendimento automatico. Inoltre, le funzionalità rivoluzionarie di Apache Spark rendono la sua richiesta alle stelle.

Supporta un'ampia gamma di database come HDFS di Hadoop, Amazon S3 e database NoSQL come MongoDB, Apache HBase, MapR Database e Apache Cassandra. Supporta anche Apache Kafka e MapR Event Store.

Architettura Apache Spark

Dopo aver esplorato l'introduzione di Apache Spark, impareremo ora la sua struttura. Ulteriori informazioni sull'architettura Apache.

La sua architettura è ben definita e ha due componenti principali:

Set di dati distribuiti resilienti (RDD)

Questa è una raccolta di elementi di dati archiviati nei nodi di lavoro del cluster Spark. Un cluster è una raccolta distribuita di macchine in cui è possibile installare Spark. Gli RDD sono chiamati resilienti, in quanto sono in grado di correggere i dati in caso di guasto. Sono chiamati distribuiti poiché sono distribuiti su più nodi in un cluster.

Spark supporta due tipi di RDD:

  • Set di dati Hadoop creati da file su HDFS (Hadoop Distributed File System)
  • Raccolte parallelizzate basate su raccolte Scala

Gli RDD possono essere utilizzati per due tipi di operazioni che sono:

  • Trasformazioni: queste operazioni vengono utilizzate per creare RDD
  • Azioni: vengono utilizzate per istruire Spark a eseguire alcuni calcoli e restituire il risultato al driver. Impareremo di più sui driver nelle prossime sezioni

DAG (grafico aciclico diretto)

Questo può essere considerato come una sequenza di azioni sui dati. Sono una combinazione di vertici e spigoli. Ogni vertice rappresenta un RDD e ogni arco rappresenta il calcolo che deve essere eseguito su tale RDD. Questo è un grafico che contiene tutte le operazioni applicate all'RDD.

Questo è un grafo orientato poiché un nodo è connesso all'altro. Il grafico è aciclico in quanto non vi è alcun ciclo o ciclo al suo interno. Una volta eseguita una trasformazione, non può tornare alla sua posizione originale. Una trasformazione in Apache Spark è un'azione che trasforma uno stato di partizione dati da A a B.

Quindi, come funziona questa architettura? Lasciaci vedere.

L'architettura Apache Spark ha due demoni primari e un cluster manager . Questi sono: daemon master e worker . Un demone è un programma che viene eseguito come processo in background. Un cluster in Spark può avere molti slave ma un singolo demone principale.

All'interno del nodo master è presente un programma driver che esegue l'applicazione Spark. La shell interattiva che potresti usare per eseguire il codice funge da programma di azionamento. All'interno del programma driver, viene creato Spark Context. Questo contesto e il programma driver eseguono un lavoro con l'aiuto di un cluster manager.

Il lavoro viene quindi distribuito sul nodo di lavoro dopo essere stato suddiviso in molte attività. Le attività vengono eseguite sugli RDD dai nodi di lavoro . Il risultato viene restituito allo Spark Context . Quando si aumenta il numero di lavoratori, i lavori possono essere divisi in più partizioni ed essere eseguiti in parallelo su molti sistemi. Ciò ridurrà il carico di lavoro e migliorerà i tempi di completamento del lavoro.

Apache Spark: vantaggi

Questi sono i vantaggi dell'utilizzo di Apache Spark :

Velocità

Durante l'esecuzione dei lavori, i dati vengono prima archiviati negli RDD. Quindi, poiché questi dati sono archiviati in memoria, sono accessibili rapidamente e il lavoro verrà eseguito più velocemente. Oltre alla memorizzazione nella cache in memoria, Spark ha anche ottimizzato l'esecuzione delle query. In questo modo, le query analitiche possono essere eseguite più velocemente. È possibile ottenere una velocità di elaborazione dei dati molto elevata. Può essere 100 volte più veloce di Hadoop per l'elaborazione di dati su larga scala.

Gestione di più carichi di lavoro

Apache Spark può gestire più carichi di lavoro alla volta. Possono essere query interattive, elaborazione di grafici, apprendimento automatico e analisi in tempo reale. Un'applicazione Spark può incorporare facilmente molti carichi di lavoro.

Facilità d'uso

Apache Spark dispone di API facili da usare per la gestione di set di dati di grandi dimensioni. Ciò include più di 100 operatori che puoi utilizzare per creare applicazioni parallele. Questi operatori possono trasformare i dati e i dati semistrutturati possono essere manipolati utilizzando le API del frame di dati.

Supporto linguistico

Spark è il preferito dagli sviluppatori in quanto supporta più linguaggi di programmazione come Java, Python, Scala e R. Ciò ti offre più opzioni per lo sviluppo delle tue applicazioni. Le API sono anche molto intuitive per gli sviluppatori in quanto li aiutano a nascondere la complicata tecnologia di elaborazione distribuita dietro operatori di alto livello che aiutano a ridurre la quantità di codice necessaria.

Efficienza

La valutazione pigra viene eseguita in Spark. Ciò significa che tutte le trasformazioni effettuate tramite RDDS sono di natura pigra. Quindi, i risultati di queste trasformazioni non vengono prodotti immediatamente e viene creato un nuovo RDD da uno esistente. L'utente può organizzare il programma Apache in diverse operazioni più piccole, il che aumenta la gestibilità dei programmi.

La valutazione pigra aumenta la velocità del sistema e la sua efficienza.

Sostegno comunitario

Essendo uno dei più grandi progetti di big data open source, ha più di 200 sviluppatori di diverse aziende che ci lavorano. Nel 2009, la comunità è stata avviata e da allora è cresciuta. Quindi, se affronti un errore tecnico, è probabile che troverai una soluzione online, pubblicata dagli sviluppatori.

Potresti anche trovare molti sviluppatori freelance o a tempo pieno pronti ad assisterti nel tuo progetto Spark.

Streaming in tempo reale

Spark è famoso per lo streaming di dati in tempo reale . Ciò è reso possibile tramite Spark Streaming, che è un'estensione dell'API Spark principale. Ciò consente ai data scientist di gestire dati in tempo reale da varie fonti come Amazon Kinesis e Kafka . I dati elaborati possono quindi essere trasferiti a database, file system e dashboard.

Il processo è efficiente nel senso che Spark Streaming può recuperare rapidamente da errori di dati. Esegue un migliore bilanciamento del carico e utilizza le risorse in modo efficiente.

Applicazioni di Apache Spark

Dopo l'introduzione ad Apache Spark e ai suoi vantaggi , impareremo di più sulle sue diverse applicazioni:

Apprendimento automatico

La capacità di Apache Spark di archiviare i dati in memoria ed eseguire query ripetutamente lo rende una buona opzione per il training di algoritmi ML. Questo perché l'esecuzione ripetuta di query simili ridurrà il tempo necessario per determinare la migliore soluzione possibile.

La Machine Learning Library (MLlib) di Spark può eseguire operazioni di analisi avanzate come analisi predittiva, classificazione, analisi del sentiment, clustering e riduzione della dimensionalità.

Integrazione dei dati

I dati prodotti attraverso i diversi sistemi all'interno di un'organizzazione non sono sempre puliti e organizzati. Spark è uno strumento molto efficiente nell'esecuzione di operazioni ETL su questi dati. Ciò significa che esegue, estrae, trasforma e carica operazioni per estrarre dati da diverse origini, pulirli e organizzarli. Questi dati vengono quindi caricati in un altro sistema per l'analisi.

Analisi interattiva

Questo è un processo attraverso il quale gli utenti possono eseguire analisi dei dati su dati in tempo reale. Con l'aiuto della funzionalità di streaming strutturato in Spark, gli utenti possono eseguire query interattive sui dati in tempo reale. Puoi anche eseguire query interattive su una sessione Web live che aumenterà l'analisi Web. Gli algoritmi di apprendimento automatico possono essere applicati anche a questi flussi di dati in tempo reale.

Calcolo della nebbia

Sappiamo che l'IoT (Internet delle cose) si occupa di molti dati provenienti da vari dispositivi dotati di sensori. Questo crea una rete di dispositivi e utenti interconnessi. Ma quando la rete IoT inizia ad espandersi, è necessario un sistema di elaborazione parallela distribuito.

Quindi, l'elaborazione dei dati e il decentramento dell'archiviazione vengono eseguiti tramite Fog Computing insieme a Spark . Per questo, Spark offre componenti potenti come Spark Streaming, GraphX ​​e MLlib. Ulteriori informazioni sulle applicazioni di Apache Spark.

Conclusione

Abbiamo appreso che Apache Spark è veloce, efficace e ricco di funzionalità. Ecco perché aziende come Huawei, Baidu, IBM, JP Morgan Chase, Lockheed Martin e Microsoft lo stanno utilizzando per accelerare il proprio business. Ora è famoso in vari campi come vendita al dettaglio, affari, servizi finanziari, gestione sanitaria e produzione.

Man mano che il mondo diventa sempre più dipendente dai dati, Apache Spark continuerà a essere uno strumento importante per l'elaborazione dei dati in futuro.

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