Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e...

37
Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni [email protected] 2 Luglio 2019 Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 1 / 31

Transcript of Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e...

Page 1: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Tecnologie e metodologie di Big Data Analytics -Apache Spark

Simone Angelini

Fondazione Ugo Bordoni

[email protected]

2 Luglio 2019

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 1 / 31

Page 2: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Outline

1 IntroduzioneArchitettura HadoopComponenti PrincipaliArchitetturaHDFSYARN

2 SparkPanoramicaCome funzionaArchitetturaConfigurazioneRDDComponenti principali

3 Hadoop vs Spark - Comparazione dei tempi di esecuzione

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 2 / 31

Page 3: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Apache Hadoop

Apache Hadoop

Framework open source per l’immagazzinamento e il calcolo distribuito digrandi quantita di dati:

Ispirato dal Google File System (GFS) e da MapReduce di Google

Gestione di cluster di grandi dimensioni (migliaia di nodi)

Sistema di calcolo per processi di tipo batch

Fault Tolerant

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 3 / 31

Page 4: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Apache Hadoop - Componenti

Componenti Principali

Hadoop Common

Hadoop Distributed File System (HDFS)

Hadoop YARN

Hadoop MapReduce

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 4 / 31

Page 5: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Hadoop 1.0 vs Hadoop 2.0

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 5 / 31

Page 6: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

HDFS - Hadoop Distributed File System

Strato di astrazione che si occupa dell’immagazzinamento dei dati

File System (basato su Java) distribuito su piu macchine

File suddivisi in blocchi da 128MB (default)

Master (NameNode) - gestisce il file system ed in particolare ilnamespace, cioe l’elenco dei nomi dei file e dei blocchi (e relativerepliche)

Slaves (DataNode) - contengono i dati veri e propri. Gestisconofisicamente le operazioni sui blocchi (creazione, cancellazione, replica)

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 6 / 31

Page 7: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Architettura HDFS

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 7 / 31

Page 8: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

YARN

IDEA

Dividere le responsabilita di MapReduce (Hadoop 1.0) in due parti:

Una parte che si occupa della gestione delle risorse(ResourceManager)

Una parte che si occupa della pianificazione e del monitoraggio delleattivita di ogni applicazione (ApplicationMaster)

PANORAMICA

Introdotto dalla versione 2.0 di Hadoop

Supporta anche modelli di programmazione non-MapReduce

Strato di astrazione che si occupa della gestione delle risorse

Fornisce un’architettura altamente ottimizzata per l’accesso ai datimemorizzati su HDFS

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 8 / 31

Page 9: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

YARN

IDEA

Dividere le responsabilita di MapReduce (Hadoop 1.0) in due parti:

Una parte che si occupa della gestione delle risorse(ResourceManager)

Una parte che si occupa della pianificazione e del monitoraggio delleattivita di ogni applicazione (ApplicationMaster)

PANORAMICA

Introdotto dalla versione 2.0 di Hadoop

Supporta anche modelli di programmazione non-MapReduce

Strato di astrazione che si occupa della gestione delle risorse

Fornisce un’architettura altamente ottimizzata per l’accesso ai datimemorizzati su HDFS

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 8 / 31

Page 10: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

YARN

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 9 / 31

Page 11: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Esempio di utilizzo di Hadoop

PROBLEMA

Hadoop, al termine di ogni fase scrive i risultati su HDFSOperazione molto lenta!

ESEMPIO

Applichiamo l’algoritmo LSH a 4 fasi su un insieme di documenti

4 Job MapReduce

Al termine di ogni singolo job, i risultati intermedi sono memorizzatisu HDFS

4 Scritture e 4 Letture da Disco!

SOLUZIONE

Apache Spark

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 10 / 31

Page 12: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Esempio di utilizzo di Hadoop

PROBLEMA

Hadoop, al termine di ogni fase scrive i risultati su HDFSOperazione molto lenta!

ESEMPIO

Applichiamo l’algoritmo LSH a 4 fasi su un insieme di documenti

4 Job MapReduce

Al termine di ogni singolo job, i risultati intermedi sono memorizzatisu HDFS

4 Scritture e 4 Letture da Disco!

SOLUZIONE

Apache Spark

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 10 / 31

Page 13: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Esempio di utilizzo di Hadoop

PROBLEMA

Hadoop, al termine di ogni fase scrive i risultati su HDFSOperazione molto lenta!

ESEMPIO

Applichiamo l’algoritmo LSH a 4 fasi su un insieme di documenti

4 Job MapReduce

Al termine di ogni singolo job, i risultati intermedi sono memorizzatisu HDFS

4 Scritture e 4 Letture da Disco!

SOLUZIONE

Apache Spark

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 10 / 31

Page 14: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Esempio di utilizzo di Hadoop

PROBLEMA

Hadoop, al termine di ogni fase scrive i risultati su HDFSOperazione molto lenta!

ESEMPIO

Applichiamo l’algoritmo LSH a 4 fasi su un insieme di documenti

4 Job MapReduce

Al termine di ogni singolo job, i risultati intermedi sono memorizzatisu HDFS

4 Scritture e 4 Letture da Disco!

SOLUZIONE

Apache Spark

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 10 / 31

Page 15: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Apache Spark

Punti chiave su Spark

un singolo framework per la gestione di applicazioni batch, interattivee real-tima

integrazione nativa con Python, Scala, R e Java (solo Java non hauna shell interattiva)

general purpose - non solo map-reduce

Puo essere eseguito su diversi Cluster Manager (Hadoop YARN,Mesos, Standalone, cloud).

Puo accedere a varie sorgenti di dati (HDFS, Cassandra, HBase, S3)

i risultati delle operazioni intermedie vengono salvate in memoriaprincipale

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 11 / 31

Page 16: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Spark Environment

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 12 / 31

Page 17: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Spark - Come funziona

La prima cosa che un programma Spark deve fare e creare un oggettoSparkContext:

viene creato dal programma Driver e specifica configurazione ecomportamento dell’applicazione

Se si utilizzano le shell interattive, la creazione dello SparkContext eeffettuata automaticamente al caricamento dell’ambiente (si puorichiamare attraverso l’oggetto sc)

Lo SparkContext verra poi utilizzato per creare nuovi oggetti.

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 13 / 31

Page 18: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Architettura di Spark

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 14 / 31

Page 19: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Master e slave

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 15 / 31

Page 20: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Il master di Spark 1/2

Configurazione del Master

Nella configurazione del context, dobbiamo specificare un parametromaster. Questo parametro puo essere scelto tra:

local: Spark verra eseguito localmente senza parallelismo (solo unworker thread)

local[k]: Spark verra eseguito localmente con un parallelismo di k (kworker thread. Il miglior valore di k e il numero di core disponibilisulla macchina)

spark://host:port: connessione a un cluster Spark standalone

yarn://host:port: connessione a un cluster YARN

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 16 / 31

Page 21: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Il master di Spark 2/2

Compiti del Master

connessione a un Cluster Manager

richiede e gestisce gli executor sui nodi del cluster. Executor sonoprocessi che sono utilizzati per eseguire calcoli e immagazzinare dati

invia il codice dell’applicazione ad ogni executor

assegna compiti ad ogni executor

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 17 / 31

Page 22: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Resilient Distributed Datasets (RDD) 1/6

Che cos’e un RDD

Struttura dati fondamentale di Spark, e una collezione immutabile edistribuita di oggetti.

Ogni RDD e diviso in partizioni multiple, che possono essere utilizzateper effettuare calcoli paralleli su diversi nodi del cluster.

Gli RDD possono contenere tutti i tipi di oggetti dei linguaggiPython, Java o Scala, incluse classi definite dall’utente.

Per creare un RDD

Un RDD puo essere creato in due modi:

caricamento da un dataset esterno (JSON,HDFS,MySQL,CSV...)

distribuzione di una collezione di oggetti nel programma driver (adesempio una lista o un insieme di dati)

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 18 / 31

Page 23: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Resilient Distributed Datasets (RDD) 1/6

Che cos’e un RDD

Struttura dati fondamentale di Spark, e una collezione immutabile edistribuita di oggetti.

Ogni RDD e diviso in partizioni multiple, che possono essere utilizzateper effettuare calcoli paralleli su diversi nodi del cluster.

Gli RDD possono contenere tutti i tipi di oggetti dei linguaggiPython, Java o Scala, incluse classi definite dall’utente.

Per creare un RDD

Un RDD puo essere creato in due modi:

caricamento da un dataset esterno (JSON,HDFS,MySQL,CSV...)

distribuzione di una collezione di oggetti nel programma driver (adesempio una lista o un insieme di dati)

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 18 / 31

Page 24: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Resilient Distributed Datasets (RDD) 2/6

Operazioni sugli RDD

Trasformazioni : Costruisce un nuovo RDD da un precedente RDD.Operazioni lazy (pigre), i risultati delle operazioni non vengonocalcolate immediatamente, ma si tiene traccia solo delletrasformazioni applicate all’RDD

ottimizza le computazioni richiestepermette il recupero di dati persi da partizioni danneggiate

Azioni : calcolano un risultato basato su un RDD e il risultato e inviatoal programma Driver, o salvato su sistema di store esterno (HDFS)

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 19 / 31

Page 25: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Resilient Distributed Datasets (RDD) 2/6

Operazioni sugli RDD

Trasformazioni : Costruisce un nuovo RDD da un precedente RDD.Operazioni lazy (pigre), i risultati delle operazioni non vengonocalcolate immediatamente, ma si tiene traccia solo delletrasformazioni applicate all’RDD

ottimizza le computazioni richiestepermette il recupero di dati persi da partizioni danneggiate

Azioni : calcolano un risultato basato su un RDD e il risultato e inviatoal programma Driver, o salvato su sistema di store esterno (HDFS)

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 19 / 31

Page 26: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Resilient Distributed Datasets (RDD) 3/6

Trasformazione Descrizione

map(func)restituisce un nuovo dataset distribuito costruitopassando ciascun elemento della sorgente attraverso una funzione func

filter(func)restituisce un nuovo dataset costruito selezionando tutti quegli elementidella sorgente su cui func restituisce true

flatMap(func)simile a map, ma per ogni oggetto di input posso avere 0 o piu oggetti di output(per cui func dovrebbe restituire un array di elementi piuttosto che un singolo elemento)

union(altroDataset)restituisce un nuovo dataset che contiene l’unione degli elementidel dataset sorgente e del dataset passato come argomento

distinct([numTasks])) restituisce un nuovo dataset che contiene gli elementi distinti del dataset sorgente

groupByKey([numTasks]) quando richiamata su un dataset di coppie (K, V), restituisce un dataset di coppie (K, Seq[V])

reduceByKey(func,[numTasks])quando richiamata su un dataset di coppie (K, V), restituisce un dataset di coppie (K, V) dove i valoriper ogni chiave sono aggregati usando la corrispondente funzione di reduce

sortByKey([ascending],[numTasks])quando richiamata su un dataset di coppie (K, V), dove K implementa Ordered (ed e quindi una lista ordinabile),restituisce un dataset di coppie (K, V) ordinate sulle chiavi in ordine crescente o decrescente,come specificato dall’argomento booleano ascending

join(otherDataset,[numTasks])quando richiamata su dataset di coppie (K, V) e (K, W),restituisce un dataset di coppie (K, (V, W)) con tutte le coppie degli elementi per ogni chiave

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 20 / 31

Page 27: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Resilient Distributed Datasets (RDD) 4/6

Azione Descrizionereduce(func) aggrega gli elementi del dataset usando la funzione func (che prende 2 argomenti in input e ne restituisce uno)

collect() restituisce tutti gli elementi del dataset come un array di oggetti al programma driver

count() restituisce il numero di oggetti del dataset

first() restituisce il primo elemento del dataset – simile a take(1)

take(n)restituisce un array con i primi n elementi del dataset –attualmente non eseguito in parallelo,ma il programma driver calcola tutti gli elementi

saveAsTextFile(path)scrive gli elementi del dataset come file di testo su una data cartella del filesystem locale,del filesystem distribuito (HDFS) o qualsiasi altro filesystem supportato da Hadoop

saveAsSequenceFile(path)scrive gli elementi del dataset come HadoopSequenceFile su una data cartella del filesystem locale,del filesystem distribuito (HDFS) o qualsiasi altro filesystem supportato da Hadoop.

countByKey() disponibile solo su RDD di tipo (K, V). Restituisce un ‘Map‘ di (K, Int) coppie con il conteggio per ciascuna chiave

foreach(func) esegue una funzione func su ciascun elemento del dataset.

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 21 / 31

Page 28: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Resilient Distributed Datasets (RDD) 5/6

Persistenza degli RDD

Spark puo effettuare la persistenza di un dataset utilizzato tra varieoperazioni in memoria principale (anche detta operazione di cache deidati).

Ciascuna parte di un dataset risicede su ogni nodo del cluster, e sarautilizzato se necessario

Di solito la cache dei dati permette un miglioramento di 10 volte delleperformance nell’esecuzione di Azioni.

Fault-tolerant: quando una partizione viene perduta (ad esempio inseguito ad un fallimento), verra automaticamente ricalcolata usandole precedenti trasformazioni

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 22 / 31

Page 29: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Resilient Distributed Datasets (RDD) 6/6

Persistenza Descrizione

MEMORY ONLYImmagazzina l’RDD come oggetti Java deserializzati nella JVM.Se l’RDD non entra in memoria, alcune partizioni non saranno messe in memoria principalee saranno ricalcolate al volo ogni volta che sara necessario

MEMORY AND DISKmmagazzina l’RDD come oggetti Java deserializzati nella JVM.Se l’RDD non entra in memoria, immagazzina le partizioni che eccedono su discoe verranno lette da disco ogni volta che saranno necessarie.

MEMORY ONLY SERImmagazzina l’RDD come oggetti Java serializzati (un byte array per ogni partizione).Generalmente e piu efficiente dal punto di vista del’occupazione dello spazio rispetto agli oggetti deserializzati,specialmente quando viene utilizzato un serializer efficiente (ad es. KryoSerializer), ma piu costoso in termini di computazioni per la lettura dei dati.

MEMORY AND DISK SER Simile a MEMORY ONLY SER, ma mette le partizioni che non entrano in memoria principale su disco invece che ricalcolarle al volo ogni volta che sono necessarie.

DISK ONLY Immagazzina le partizioni dell’RDD solo su disco.

MEMORY ONLY 2, MEMORY AND DISK 2, etc Simili ai livelli spiegati sopra, ma replica ogni partizione su 2 nodi del cluster.

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 23 / 31

Page 30: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Componenti di Spark 1/6

Spark Core

Contiene le funzionalita base di Spark:

componenti di task scheduling

componenti di gestione della memoria

componenti per il recupero dai fallimenti

principali strutture dati astratte per la gestione dei dati (RDD)

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 24 / 31

Page 31: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Componenti di Spark 2/6

Spark SQL

Pacchetto di Spark per la gestione e l’utilizzo di dati strutturati

Interrogazione dei dati tramite SQL (o sue varianti, come HQL)

Supporta varie sorgenti di dati (tabelle Hive, Parquet, JSON, CSV...)

La manipolazione dei dati e supportata in diversi linguaggi (Java,Python, Scala)

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 25 / 31

Page 32: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Componenti di Spark 3/6

Spark Streaming

Componente che permette il processamento real-time di flussi di dati

Contiene API per la manipolazione di flussi di dati attraverso gli RDDAPI di Spark Core

Progettato per essere fault tolerant, scalabile e con un altothroughput come Spark Core

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 26 / 31

Page 33: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Componenti di Spark 4/6

GraphX

Libreria per la gestione di grafi (ad esempio grafi sociali basati suvari tipi di relazione, messaggi di utenti, retweet, menzioni ecc.)

Clacoli sui grafi altamente parallelizzati

Creazione dei grafi a partire da RDD

Diverse funzioni e operatori nativi per la gestione dei grafi (ad es:subgraph, mapVertices ecc.)

Libreria che contiene i piu comuni algoritmi per l’analisi dei grafi(PageRank, maxOutDegree, maxInDegree etc.)

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 27 / 31

Page 34: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Componenti di Spark 5/6

MLib

Contiene le piu comuni funzionalita di machine learning (ML)

Vari algoritmi di Machine Learning (regressione, classificazione,clustering ecc.)

Tutti i metodi sono progettati per essere scalabili e parallelizabili

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 28 / 31

Page 35: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

Componenti di Spark 6/6

SparkR

Pacchetto che permette l’utilizzo del linguaggio di programmazione Rsu ambiente Spark

Contiene un’implementazione distribuita dei DataFrame di R:(Distributed Data Frame)

Supporta le operazioni tipiche di R (selezione, filtering, aggregazioneecc.)

Pacchetto in continua evoluzione, essendo una delle ultimecomponenti aggiunte all’ecosistema Spark

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 29 / 31

Page 36: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

LSH su Hadoop-Spark 1/2

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 30 / 31

Page 37: Tecnologie e metodologie di Big Data Analytics - Apache Spark · 2019-07-19 · Tecnologie e metodologie di Big Data Analytics - Apache Spark Simone Angelini Fondazione Ugo Bordoni

LSH su Hadoop-Spark 2/2

Simone Angelini (Fondazione Ugo Bordoni) Tecnologie e metodologie di Big Data Analytics 2 Luglio 2019 31 / 31