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]