Analisi dei dati attraverso sistemi Open Source

Transcript

Analisi dei dati attraverso sistemi Open Source
Analisi dei dati attraverso sistemi
Open Source
Aka Hadoop
Chi sono
➢
nico logrillo
➢
IT Business Intelligence Analyst @ Wolters Kluwer
Studente (*) Universitario @ Informatica Magistrale di
Bari
➢
*eterno studente
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:
➢
Big Data?
“
”
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.
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
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)
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
➢
Architettura di Hadoop
➢
Architettura Master-Slave
MASTER
...
SLAVES
Architettura di Hadoop
➢
Architettura Master-Slave
...
MASTER
NameNode
JobTracker
SLAVES
TaskTracker
DataNode
Architettura di Hadoop
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.
Architettura di Hadoop
YARN (Yet Another Resource Negotiator)
Gestisce le risorse all'interno di Hadoop,
garantendo la sicurezza e la coerenza
tra le risorse del cluster
Architettura di Hadoop
➢
Architettura
MapReduce
Paradigma per la realizzazione di
applicazioni distribuite sul cluster
Hadoop
Architettura di Hadoop
Nell'ecosistema di Haoop esistono
moltissimi progetti che hanno un
ruolo nel trattamento dei dati.
Ecosistema di Hadoop
(alcuni esempi...)
Esempi di cluster
Cluster: 15 nodi
Ogni nodo:
8 cores
16G RAM
1.4T storage
Cluster: 150 nodi
Ogni nodo:
Intel xeon
16G RAM
800G storage
Cluster: 532 nodi
Ogni nodo:
8G RAM
Tot. Disk size: 5.3Peta
Utilizzato per
Il motore di ricerca
Utilizzato per
ETL, statistiche, ML
“Heavy usage of
Java MapReduce,
Apache Pig,
Apache Hive,
Apache HBase ”
Esempi di cluster
Cluster 1:
1100 nodi
8800 cores
12PB
Singolo nodo:
8 cores
12TB
“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 nodi
2400 cores
3PB
Singolo nodo:
8 cores
12TB
WTF!!!
Hadoop MapReduce
MapReduce è un framework per
l'elaborazione
di
problemi
parallelizzabili attraverso enormi
set di dati utilizzando un gran
numero di computer ( nodi )
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>)
Hadoop MapReduce
(esempio: wordcount)
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>)
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>)
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 log
2. - 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)
Hadoop MapReduce
(esempio: Analisi dei Log)
1. Caricare i log sull'HDFS
hadoop fs -put access_log_Aug95 /user/linuxday/dataset
Hadoop MapReduce
(esempio: Analisi dei Log)
2. Scrivere un programma in MapReduce che deve:
1. - Parserizzare il contenuto dei log
2. - 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
Metodo della richiesta
Quando è stata fatta
la richiesta
PID
Risorsa richiesta
Processo
Hadoop MapReduce
(esempio: Analisi dei Log)
Hadoop MapReduce
(esempio: Analisi dei Log)
Main Class
Mapper Class
Reducer Class
Tipi di dati di Hadoop
Hadoop MapReduce
(esempio: Analisi dei Log)
Hadoop MapReduce
(esempio: Analisi dei Log)
Map Phase
Input <INDEX, LINE>
Output list(<TOKEN, VALORE>)
Hadoop MapReduce
(esempio: Analisi dei Log)
Hadoop MapReduce
(esempio: Analisi dei Log)
Reduce Phase
Input <TOKEN, list(1,1,1,...,1)>
Output list(<TOKEN, sum(list(1,1,1,...,1))>)
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.gif 751435
/images/MOSAIC-logosmall.gif 669777
/images/USA-logosmall.gif 666057
/images/WORLD-logosmall.gif 659867
/images/ksclogo-medium.gif 623047
/ksc.html
433947
/history/apollo/images/apollo-logo1.gif 377542
...
Hadoop MapReduce
Ok, MapReduce è già datato...
Apache
E' un motore di calcolo estremamente veloce per il processamento di enormi moli di dati
Velocità:
100X più veloce di MapReduce in memoria
10X più veloce di MapReduce sul caricamento da disco
Linguaggi Supportati:
Java
Scala
Python
R
Librerie presenti:
SparkSQL
SparkStreaming
Mlib
GraphX
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
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'RDD
in un nuovo RDD.
Lo scheduler costruisce un grafo contenente le trasformazioni richieste
dall'applicazione
determinando 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.
Apache
C'è già qualcosa di più ambizioso
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
#METTIALINUX
#ESCILADISTRO
https://github.com/colino
facebook.com/philipj.fry.5439
[email protected]