Questo sito utilizza cookie di terze parti per inviarti pubblicità in linea con le tue preferenze. Se vuoi saperne di più clicca QUI 
Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all'uso dei cookie. OK

Analisi esplorativa di Dataset Twitter

Laurea liv.I

Facoltà: Scienze e Tecnologie Informatiche

Autore: Luca Di Liello Contatta »

Composta da 28 pagine.

 

Questa tesi ha raggiunto 25 click dal 26/06/2018.

Disponibile in PDF, la consultazione è esclusivamente in formato digitale.

 

 

Estratto della Tesi di Luca Di Liello

Mostra/Nascondi contenuto.
9 anche che Spark, dalla versione 1.3, ha sviluppato due sistemi alternativi agli RDD per la gestione dei dati, ovvero i DataFrame, ed i Dataset. Nonostante siano sistemi più evoluti, ho comunque scelto di rimanere sugli RDD, sia per il supporto dei colleghi in azienda che utilizzano a loro volta gli RDD, sia perché non ho bisogno di particolari nuove funzioni. Inoltre il guadagno in prestazioni con le nuove API è abbastanza contenuto e quindi sono rimasto fedele agli RDD (che continuano comunque ad essere supportati). Altra caratteristica fondamentale di Spark è la sua gestione delle trasformazioni. Sulla base del programma che è stato lanciato viene costruito un DAG (Directed Acyclic Graph) contente tutte le dipendenze tra le operazioni che devono essere eseguite. Vengono riconosciute fondamentalmente due tipi di dipendenze: stretta, quando un RDD figlio dipende direttamente (1-1) dal RDD padre, ed ampia, quando un RDD figlio dipende da più padri (n-1). Il DAG è creato cercando di massimizzare la località dei dati ed il parallelismo. Una Map, per esempio, genera una dipendenza stretta mentre un prodotto cartesiano tra due RDD ha una dipendenza 2-1. Riguardo alla gestione del cluster, Spark utilizza il classico modello master-slave, dove un nodo viene selezionato come master ed esegue tutte le operazioni di scheduling ed assegnamento dei job mentre gli altri sono gli slave e si occupano della vera elaborazione dei dati. Essa può essere impostata in Standalone Mode, Hadoop Yarn o Apache Mesos in base a quale gestione si desidera utilizzare. Per quanto riguarda il file system distribuito invece, Spark può appoggiarsi su HDFS, Cassandra, Amazon S3 e molti altri. Infine bisogna menzionare il supporto di Spark ai vari linguaggi di programmazione. È infatti possibile scrivere programmi in Scala, Python, Java oppure R. Per eseguire i miei programmi mi sono servito principalmente di tre cluster Spark diversi: • Cluster locale sul mio portatile, 16GB di RAM e 4 core (2 thread per core); • Home Cluster (1 Master + 1 Worker), HP DL160G6, 72GB di RAM e 12 core (2 thread per core); • Amazon EC2 cluster, 1 Master + 4 Worker m4.xlarge da 16GB di RAM e 4 core ciascuno (1 thread per core); Per le ultime due istanze è stato necessario un setup non indifferente: per esempio entrambi i cluster hanno avuto bisogno della messa a punto di Hadoop come file system distribuito in quanto le prestazioni con Amazon S3 non erano abbastanza soddisfacenti e la bassa velocità della rete faceva da collo di bottiglia alla potenza del cluster. Figura 1 – Esempio di DAG generato da Spark 1.6: Stage 0 e Stage 1 eseguono due join di dataset. Stage 2 riceve i risultati degli stage precedenti, esegue una Map e poi fa di nuovo una join. Il risultato viene infine mappato nuovamente e salvato su disco.
Estratto dalla tesi: Analisi esplorativa di Dataset Twitter