Apache Spark è un framework open source per il calcolo distribuito sviluppato dall'AMPlab della Università della California e successivamente donato alla Apache Software Foundation.
Descrizione
[modifica | modifica wikitesto]A differenza del paradigma MapReduce, basato sul disco a due livelli di Hadoop, le primitive "in-memory" multilivello di Spark forniscono prestazioni fino a 100 volte migliori per talune applicazioni[1]. Ciò permette ai programmi utente di caricare dati in un gruppo di memorie e interrogarlo ripetutamente, Spark è studiato appositamente per algoritmi di apprendimento automatico[2].
Spark richiede un gestore di cluster e un sistema di archiviazione distribuita. Per il primo supporta nativamente un cluster Spark (modalità "standalone", in cui è possibile lanciare un cluster manualmente o tramite appositi script di lancio), ma anche Hadoop YARN, o Apache Mesos, per il secondo Spark può interfacciarsi con Hadoop Distributed File System (HDFS), Apache Cassandra[3] , OpenStack Swift, Amazon S3, Apache Kudu, ma anche soluzioni personalizzabili. Spark supporta anche soluzioni pseudo-distribuite in modalità locale, usate di solito per lo sviluppo o scopo di test, dove l'archiviazione distribuita non è richiesta e si usa il file system locale; in tale scenario, Spark è eseguito su una macchina singola.
L'8 febbraio 2020 è stata rilasciata la versione 2.4.5 di Apache Spark.[4]
Le interfacce
[modifica | modifica wikitesto]Le prime interfacce che sono state sviluppate per l'uso di Apache Spark sono gli insiemi di dati con capacità di recupero (in inglese Resilient Distributed Dataset, RDD). Queste interfacce hanno i controlli sui tipi, ma non sono ottimizzate.
Successivamente, sono state introdotte altre interfacce, dette intelaiature di dati (in inglese data frame) che possono essere ottimizzate dal motore di Apache Spark ed hanno delle prestazioni nettamente superiori, ma non hanno i controlli sui tipi di dato. Questo comporta la possibilità di avere molteplici errori a runtime.
Le interfacce più recenti sono dette insiemi di dati (in inglese data set) e cercano di coniugare l'ottimizzazione ed i controlli sui tipi al momento della compilazione.
Note
[modifica | modifica wikitesto]- ^ (EN) Reynold Xin, Josh Rosen, Matei Zaharia, Michael Franklin, Scott Shenker e Ion Stoica, Association for Computing Machinery, Shark: SQL and Rich Analytics at Scale (PDF), SIGMOD '13, New York, 22-27 giugno 2013. URL consultato il 29 agosto 2017 (archiviato dall'url originale il 9 agosto 2017).
- ^ Matei Zaharia, Spark: In-Memory Cluster Computing for Iterative and Interactive Applications, su youtube.com, Invited Talk at NIPS 2011 Big Learning Workshop: Algorithms, Systems, and Tools for Learning at Scale.
- ^ Doan, DuyHai, Re: cassandra + spark / pyspark, su mail-archives.apache.org, 10-09-2014. URL consultato il 12 febbraio 2017.
- ^ Downloads | Apache Spark, su spark.apache.org. URL consultato il 29 marzo 2018.
Altri progetti
[modifica | modifica wikitesto]- Wikimedia Commons contiene immagini o altri file su Apache Spark
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Sito ufficiale, su spark.apache.org.
- Repository sorgenti di Apache Spark, su github.com.
- Repository sorgenti di Apache Spark, su gitbox.apache.org.
- Sito di segnalazione bug, su issues.apache.org.
- (EN) Spark SQL
- (EN) Spark Streaming
- (EN) MLlib machine learning library
- (EN) GraphX graph processing library