Sei sulla pagina 1di 41

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

TaskTracker
SLAVES
... 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: Utilizzato per
8 cores Il motore di ricerca
16G RAM
1.4T storage

Cluster: 150 nodi


Ogni nodo: Utilizzato per
Intel xeon ETL, statistiche, ML
16G RAM
800G storage

Cluster: 532 nodi “Heavy usage of


Ogni nodo: Java MapReduce,
8G RAM Apache Pig,
Apache Hive,
Apache HBase ”
Tot. Disk size: 5.3Peta
Esempi di cluster

Cluster 1: “We use Apache


1100 nodi Hadoop to store copies
8800 cores of internal log and
12PB dimension data sources
Singolo nodo: and use it as a source
8 cores for reporting/analytics
12TB 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


PID
Quando è stata fatta
la richiesta 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

nico_ntrax@hotmail.com

Potrebbero piacerti anche