Apache Spark - Introduzione

Le industrie utilizzano ampiamente Hadoop per analizzare i propri set di dati. Il motivo è che il framework Hadoop si basa su un semplice modello di programmazione (MapReduce) e consente una soluzione di elaborazione scalabile, flessibile, a tolleranza di errore e conveniente. In questo caso, la preoccupazione principale è mantenere la velocità nell'elaborazione di grandi set di dati in termini di tempo di attesa tra le query e tempo di attesa per eseguire il programma.

Spark è stato introdotto da Apache Software Foundation per accelerare il processo del software di calcolo computazionale Hadoop.

Contro una credenza comune, Spark is not a modified version of Hadoope in realtà non dipende da Hadoop perché dispone di una propria gestione del cluster. Hadoop è solo uno dei modi per implementare Spark.

Spark utilizza Hadoop in due modi: uno è storage e il secondo è processing. Poiché Spark ha il proprio calcolo di gestione del cluster, utilizza Hadoop solo a scopo di archiviazione.

Apache Spark

Apache Spark è una tecnologia di elaborazione cluster velocissima, progettata per un calcolo veloce. È basato su Hadoop MapReduce ed estende il modello MapReduce per utilizzarlo in modo efficiente per più tipi di calcoli, che includono query interattive e elaborazione del flusso. La caratteristica principale di Spark è la suain-memory cluster computing che aumenta la velocità di elaborazione di un'applicazione.

Spark è progettato per coprire un'ampia gamma di carichi di lavoro come applicazioni batch, algoritmi iterativi, query interattive e streaming. Oltre a supportare tutti questi carichi di lavoro in un rispettivo sistema, riduce l'onere di gestione di mantenere strumenti separati.

Evoluzione di Apache Spark

Spark è uno dei sottoprogetti di Hadoop sviluppati nel 2009 nell'AMPLab di UC Berkeley da Matei Zaharia. Era Open Sourced nel 2010 con una licenza BSD. È stato donato alla Fondazione software Apache nel 2013 e ora Apache Spark è diventato un progetto Apache di primo livello da febbraio 2014.

Caratteristiche di Apache Spark

Apache Spark ha le seguenti caratteristiche.

  • Speed- Spark aiuta a eseguire un'applicazione nel cluster Hadoop, fino a 100 volte più veloce in memoria e 10 volte più veloce durante l'esecuzione su disco. Ciò è possibile riducendo il numero di operazioni di lettura / scrittura su disco. Memorizza in memoria i dati di elaborazione intermedia.

  • Supports multiple languages- Spark fornisce API integrate in Java, Scala o Python. Pertanto, puoi scrivere applicazioni in diverse lingue. Spark presenta 80 operatori di alto livello per le query interattive.

  • Advanced Analytics- Spark non supporta solo "Mappa" e "Riduci". Supporta anche query SQL, dati in streaming, machine learning (ML) e algoritmi di grafici.

Spark costruito su Hadoop

Il diagramma seguente mostra tre modi per creare Spark con i componenti Hadoop.

Esistono tre modi per la distribuzione di Spark, come spiegato di seguito.

  • Standalone- La distribuzione autonoma di Spark significa che Spark occupa il posto sopra HDFS (Hadoop Distributed File System) e lo spazio viene allocato esplicitamente per HDFS. Qui, Spark e MapReduce verranno eseguiti fianco a fianco per coprire tutti i processi Spark sul cluster.

  • Hadoop Yarn- La distribuzione di Hadoop Yarn significa, semplicemente, spark funziona su Yarn senza alcuna preinstallazione o accesso root richiesto. Aiuta a integrare Spark nell'ecosistema Hadoop o nello stack Hadoop. Consente ad altri componenti di funzionare in cima allo stack.

  • Spark in MapReduce (SIMR)- Spark in MapReduce viene utilizzato per avviare il lavoro Spark oltre alla distribuzione autonoma. Con SIMR, l'utente può avviare Spark e utilizza la sua shell senza alcun accesso amministrativo.

Componenti di Spark

La figura seguente mostra i diversi componenti di Spark.

Apache Spark Core

Spark Core è il motore di esecuzione generale sottostante per la piattaforma Spark su cui si basano tutte le altre funzionalità. Fornisce elaborazione in memoria e set di dati di riferimento in sistemi di archiviazione esterni.

Spark SQL

Spark SQL è un componente in cima a Spark Core che introduce una nuova astrazione dei dati chiamata SchemaRDD, che fornisce supporto per dati strutturati e semi-strutturati.

Spark Streaming

Spark Streaming sfrutta la capacità di pianificazione rapida di Spark Core per eseguire analisi di streaming. Acquisisce i dati in mini-batch ed esegue trasformazioni RDD (Resilient Distributed Datasets) su questi mini-batch di dati.

MLlib (libreria di machine learning)

MLlib è un framework di machine learning distribuito sopra Spark a causa dell'architettura Spark basata sulla memoria distribuita. Secondo i benchmark, è fatto dagli sviluppatori MLlib contro le implementazioni ALS (Alternating Least Squares). Spark MLlib è nove volte più veloce della versione basata su disco Hadoop diApache Mahout (prima che Mahout acquisisse un'interfaccia Spark).

GraphX

GraphX ​​è un framework di elaborazione di grafici distribuito su Spark. Fornisce un'API per esprimere il calcolo del grafico in grado di modellare i grafici definiti dall'utente utilizzando l'API di astrazione Pregel. Fornisce inoltre un runtime ottimizzato per questa astrazione.