analisi dei dati attraverso sistemi open source · storia di hadoop nasce da un sotto progetto di...

41
Analisi dei dati attraverso sistemi Open Source Aka Hadoop

Upload: others

Post on 18-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Analisi dei dati attraverso sistemi Open Source

Aka Hadoop

Page 2: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Chi sono

➢ nico logrillo

➢ IT Business Intelligence Analyst @ Wolters Kluwer

➢ Studente (*) Universitario @ Informatica Magistrale di Bari

*eterno studente

Page 3: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Che cos'è ➢E' un ecosistema di strumenti open-source orientato al calcolo distribuito di big data attraverso un cluster di computer

➢Sfrutta macchine di comodo per l'elaborazione➢Scalabile➢Fault tolerant➢Numerosi strumenti➢Open-Source➢Sempre in evoluzione➢Grande comunità di utenti, tra cui:

Page 4: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Big Data?

Page 5: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Big Data?Cosa sono?

• Nel 2001 Doug Laney (analista @ Gartner) definì I big data in termini volume, velocity e variety:

• Volume. Many factors contribute to the increase in data volume. Transaction-based data stored through the years. Unstructured data streaming in from social media. Increasing amounts of sensor and machine-to-machine data being collected. In the past, excessive data volume was a storage issue. But with decreasing storage costs, other issues emerge, including how to determine relevance within large data volumes and how to use analytics to create value from relevant data.

• Velocity. Data is streaming in at unprecedented speed and must be dealt with in a timely manner. RFID tags, sensors and smart metering are driving the need to deal with torrents of data in near-real time. Reacting quickly enough to deal with data velocity is a challenge for most organizations.

• Variety. Data today comes in all types of formats. Structured, numeric data in traditional databases. Information created from line-of-business applications. Unstructured text documents, email, video, audio, stock ticker data and financial transactions. Managing, merging and governing different varieties of data is something many organizations still grapple with.

Page 6: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Big Data?

Da dove provengono?

• Social networks e social media (Twitter, Facebook, blogs, forum, etc.)• Email• Transazioni commerciali• Documenti cartacei digitalizzati• Registrazioni video• Registrazioni audio• Immagini• Dati di geo-posizionamento (GPS)• Dati generati da trasmettitori e sensori (cellulari, wifi, bluetooth, Rfid, NFC, etc.)

o misuratori digitali (digital meters) • Internet of Things• Automazione processi produttivi• Digitalizzazione dei processi di R&D (nella bioinformatica e biogenetica, chimica,

climatologia, etc.)• Web Log

Page 7: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Big Data?

• l'iter da seguire• Identificare il problema• Identificare sorgenti dati e strumenti da utilizzare• Collezionare I dati• Preparare I dati (integrazione, trasformazione, pulizia, filtraggio e aggregazione)• Costruire un modello• Valutare il modello• Comunicare I risultati

Jeff Hammerbacher’s Model(facebook)

Page 8: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Storia di Hadoop

➢Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source).

➢Nutch aveva problemi di scalabilità e riusciva a gestire solo piccole quantità di dati

➢Nel 2003 fu pubblicato un articolo sul Google File System (GFS) e il team di sviluppo di Nutch iniziò ad ispirarsi al GFS

➢Nel 2004 viene realizzato il Nutch Distributed File System (NDFS)

➢In seguito venne implementato il paradigma MapReduce che poteva essere usato anche per altri scopi, per questo motivo fu promosso come progetto a sè: Hadoop

Page 9: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Architettura di Hadoop

➢Architettura Master-Slave

...

MASTER

SLAVES

Page 10: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Architettura di Hadoop

➢Architettura Master-Slave

...

MASTER

SLAVES

NameNodeJobTracker

TaskTrackerDataNode

Page 11: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Architettura di Hadoop

Page 12: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Architettura di Hadoop

HDFS (Hadoop Distributde File System)

E' il filesystem distribuito di hadoop è stato progettato per archiviare in modo affidabile file di grandi dimensioni attraverso le macchine in un grande Cluster.

Page 13: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Architettura di Hadoop

YARN (Yet Another Resource Negotiator)

Gestisce le risorse all'interno di Hadoop,garantendo la sicurezza e la coerenzatra le risorse del cluster

Page 14: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Architettura di Hadoop

➢Architettura

MapReduce

Paradigma per la realizzazione di applicazioni distribuite sul clusterHadoop

Page 15: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Architettura di Hadoop

Nell'ecosistema di Haoop esistonomoltissimi progetti che hanno unruolo nel trattamento dei dati.

Page 16: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Ecosistema di Hadoop(alcuni esempi...)

Page 17: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Esempi di cluster

Cluster: 15 nodiOgni nodo:

8 cores16G RAM1.4T storage

Utilizzato perIl motore di ricerca

Cluster: 150 nodiOgni nodo:

Intel xeon16G RAM800G storage

Utilizzato perETL, statistiche, ML

Cluster: 532 nodiOgni nodo:

8G RAM

Tot. Disk size: 5.3Peta

“Heavy usage of Java MapReduce,

Apache Pig, Apache Hive,

Apache HBase ”

Page 18: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Esempi di cluster

Cluster 1: 1100 nodi8800 cores12PB

Singolo nodo:8 cores12TB

“We use Apache Hadoop to store copies

of internal log and dimension data sources and use it as a source for reporting/analytics and machine learning”

Cluster 2: 300 nodi2400 cores3PB

Singolo nodo:8 cores12TB

WTF!!!

Page 19: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce

MapReduce è un framework per l'elaborazione di problemi parallelizzabili attraverso enormi set di dati utilizzando un gran numero di computer ( nodi )

Page 20: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(Paradigma)

Il paradigma MapReduce processa I dati manipolando coppie chiave/valore:

Map Phase

Input <k1, v1>

Output list(<k2, v2>)

Reduce Phase

Input <k2, list(v2)>

Output list(<k3, v3>)

Page 21: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: wordcount)

Page 22: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: wordcount)

Map Phase

Input <k1, v1>

Output list(<k2, v2>)

Map Phase

Input <INDEX, TOKEN>

Output list(<TOKEN, VALORE_ASSEGNATO>)

Map Phase (esempio)

Input <testo1.txt, Linux>

Output list(<Linux, 1>)

Page 23: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: wordcount)

Reduce Phase

Input <k2, list(v2)>

Output list(<k3, v3>)

Reduce Phase

Input <TOKEN, list(1,1,1,...,1)>

Output list(<TOKEN, sum(list(1,1,1,...,1))>)

Reduce Phase (esempio)

Input <Linux, list(1,1,1,...,1)>

Output list(<Linux, 100>)

Page 24: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: Analisi dei Log)

1.Caricare i log sull'HDFS

2.Scrivere un programma in MapReduce che deve:1.- Parserizzare il contenuto dei log2. - Estrarre i campi di interesse

3.Ordinare l'output

dataset di riferimento: http://ita.ee.lbl.gov/html/contrib/NASA-HTTP.html (il dataset contiene I log provenienti da Apache Web Server)

Page 25: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: Analisi dei Log)

1.Caricare i log sull'HDFS

hadoop fs -put access_log_Aug95 /user/linuxday/dataset

Page 26: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: Analisi dei Log)

2. Scrivere un programma in MapReduce che deve:1.- Parserizzare il contenuto dei log2. - Estrarre i campi di interesse

Esempio di un record:

in24.inetnebr.com - - [01/Aug/1995:00:00:01 -0400] "GET /shuttle/missions/sts-68/news/sts-68-mcc-05.txt HTTP/1.0" 200 1839

Chi effettua la richiesta

Quando è stata fattala richiesta

Metodo della richiesta

Risorsa richiesta Processo

PID

Page 27: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: Analisi dei Log)

Page 28: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: Analisi dei Log)

Main Class

Mapper Class

Reducer Class

Tipi di dati di Hadoop

Page 29: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: Analisi dei Log)

Page 30: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: Analisi dei Log)

Map Phase

Input <INDEX, LINE>

Output list(<TOKEN, VALORE>)

Page 31: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: Analisi dei Log)

Page 32: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: Analisi dei Log)

Reduce Phase

Input <TOKEN, list(1,1,1,...,1)> Output list(<TOKEN, sum(list(1,1,1,...,1))>)

Page 33: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce(esempio: Analisi dei Log)

3. Ordinare l'output

hadoop fs -cat /user/linuxday/dataset/output/part* | sort -n -k2 -r | head -n100 > Top-100.txt

/images/NASA-logosmall.gif 968746/images/KSC-logosmall.gif751435/images/MOSAIC-logosmall.gif 669777/images/USA-logosmall.gif666057/images/WORLD-logosmall.gif 659867/images/ksclogo-medium.gif 623047/ksc.html 433947/history/apollo/images/apollo-logo1.gif 377542...

Page 34: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Hadoop MapReduce

Ok, MapReduce è già datato...

Page 35: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Apache

E' un motore di calcolo estremamente veloce per il processamento di enormi moli di dati

Velocità:100X più veloce di MapReduce in memoria10X più veloce di MapReduce sul caricamento da disco

Linguaggi Supportati:JavaScalaPythonR

Librerie presenti:SparkSQLSparkStreamingMlibGraphX

Page 36: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Apache

Perchè è meglio di MapReduce?

• Tempo per la creazione del Job• MapReduce è lento perchè ogni job deve leggere/scrivere dall'HDFS• MapReduce non è adatto ad operazioni di tipo iterativo (cicli in cui si deve trattare

lo stesso set di dati)

Introduce il concetto di Resilient Distributed Dataset (RDD)

• E' un set di dati suddiviso in partizioni che può restare in memoria o essere materializzato su disco

• E' immutabile. Lo si può modificare solo per mezzo di trasformazioni• Ogni nodo (worker) possiede una partizione dell'RDD

Page 37: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Apache

Come funziona una elaborazione in Spark?

• L'applicazione scritta per Spark definisce un RDD iniziale partendo da un set di dati.L'applicazione eseguirà trasformazioni come map() o filters() che muteranno l'RDDin un nuovo RDD.

• Lo scheduler costruisce un grafo contenente le trasformazioni richieste dall'applicazionedeterminando il miglior modo con cui distribuire le trasformazioni sui vari nodi.

• Al termine dell'operazione lo scheduler restituisce l'output al client che ha lanciato l'applicazione.

Page 38: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Apache

C'è già qualcosa di più ambizioso

Page 39: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

Apache Tugsten

• Il progetto parte con Apache Spark 1.4• Gestione manuale della memoria • Immagazzinare I dati nella cache della CPU• Migliori algoritmi e strutture dati

stay tuned

Page 40: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

#METTIALINUX

#ESCILADISTRO

Page 41: Analisi dei dati attraverso sistemi Open Source · Storia di Hadoop Nasce da un sotto progetto di Apache Lucene, Nutch (motore di ricerca Open Source). Nutch aveva problemi di scalabilità

https://github.com/colino

facebook.com/philipj.fry.5439

[email protected]