analisi dei dati attraverso sistemi open source · storia di hadoop nasce da un sotto progetto di...
TRANSCRIPT
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
SLAVES
NameNodeJobTracker
TaskTrackerDataNode
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 coerenzatra le risorse del cluster
Architettura di Hadoop
➢Architettura
MapReduce
Paradigma per la realizzazione di applicazioni distribuite sul clusterHadoop
Architettura di Hadoop
Nell'ecosistema di Haoop esistonomoltissimi progetti che hanno unruolo nel trattamento dei dati.
Ecosistema di Hadoop(alcuni esempi...)
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 ”
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!!!
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 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)
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 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
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.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...
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 memoria10X più veloce di MapReduce sul caricamento da disco
Linguaggi Supportati:JavaScalaPythonR
Librerie presenti:SparkSQLSparkStreamingMlibGraphX
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'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.
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