Apache Spark è un framework progettato per l’elaborazione veloce e scalabile di grandi quantità di dati. Lo stack di Spark è composto da una serie di moduli principali che forniscono funzionalità per affrontare diverse esigenze di analisi dei dati.

Componenti principali dello stack di Apache Spark

Di seguito elenco uno per uno gli elementi principali dello stack di Spark.

Spark Core

Spark Core è il cuore dello stack di Apache Spark su cui si appoggiano tutti gli altri moduli. È responsabile di fornire le funzionalità fondamentali necessarie per l’elaborazione distribuita dei dati.

Le sue caratteristiche principali includono:

  • Gestione delle funzionalità di base come task scheduling, gestione della memoria, tolleranza ai guasti e interazione con i sistemi di storage.
  • RDD, ovvero delle strutture dati che possono essere manipolate in parallelo dai nodi del sistema.
  • Multi-linguaggio, infatti Spark è scritto nel linguaggio Scala ma fornisce API per una vasta gamma di linguaggi come Java, Python (PySpark) e R (SparkR).

Spark SQL

Si tratta di un modulo per l’elaborazione di dati strutturati. Consente al tempo stesso di lavorare con la sintassi SQL, offrendo un forte vantaggio agli sviluppatori.

Spark SQL ha un catalizzatore interno che ottimizza l’esecuzione delle query su cluster. Inoltre, supporta diversi formati di dati tra cui:

  • File Parquet, JSON, csv e molti altri.
  • Tabelle HIVE.
  • Estende l’API di RDD per lavorare con DataFrame e DataSet.

Spark Streaming

È un modulo che viene utilizzato per la gestione di flussi di dati continui. Estende anch’esso le API degli RDD.

MLlib

Supporta l’elaborazione distribuita dei dati su larga scala. È una componente che mette a disposizione tutti i principali algoritmi di Machine Learning, quali classificazione, regressione, clustering, ecc…

GraphX

GraphX viene utilizzato per lavorare (e analizzare) con i grafi distribuiti su cluster e mette a disposizione algoritmi comuni come PageRank.

Cluster managers

Un cluster manager è un sistema responsabile della gestione delle risorse (CPU, memoria, ecc.) in un cluster distribuito. Apache Spark supporta diversi tipi di cluster manager, rendendolo flessibile per vari ambienti di esecuzione.

  • Spark Standalone Mode: è il cluster manager integrato in Spark che utilizza uno scheduler FIFO per la gestione dei job. Ideale per piccoli cluster o per ambienti di sviluppo e test dove non è necessario un sistema di gestione risorse più complesso.
  • Hadoop YARN (Yet Another Resource Negotiator): è il sistema di gestione delle risorse di Hadoop e Spark può essere eseguito su di esso. YARN gestisce l’allocazione delle risorse per i job Spark e consente di condividere il cluster con altre applicazioni basate su Hadoop.
  • Apache Mesos: è un sistema di gestione risorse più generale che consente di eseguire molteplici framework, tra cui Spark. Quindi, adatto per ambienti in cui si desidera un gestore risorse versatile in grado di supportare più tipi di applicazioni.
  • Kubernetes: permette di eseguire Spark in ambienti containerizzati (ad esempio su Docker). Ideale per infrastrutture moderne basate su container, dove le applicazioni Spark possono essere eseguite in modo scalabile e isolato.
Categorie: informatica

0 commenti

Lascia un commento

Segnaposto per l'avatar