Descrizione delle principali tecnologie abilitanti alla gestione dei Big Data, con particolare attenzione all’ecosistema che gravita intorno al framework Hadoop di Apache.
2. BD-ST
Descrizione delle principali tecnologie abilitanti alla
gestione dei Big Data, con particolare attenzione
all’ecosistema che gravita intorno al framework
Hadoop di Apache.
Abstract
3. Team Leader presso Consulthink
SpA
https://www.linkedin.com/in/massimorom
ano
Relatore
BD-ST
5. BD-ST
• Big data è il termine utilizzato per descrivere una raccolta di dati così grande e
complessa da richiedere strumenti differenti da quelli tradizionali per il loro
trattamento, in tutte le fasi del processo: dall'acquisizione, alla curation,
passando per condivisione, analisi e visualizzazione.
• Le caratteristiche principali dei big data, si possono riassumere nelle tre "V”:
1. Volume: nel senso di ingenti quantitativi di dati non gestibili con i
database tradizionali;
2. Velocità: dati che sono generati e richiedono di essere processati a ritmi
sostenuti (o in tempo reale);
3. Varietà: elementi di diversa natura e non necessariamente strutturati
come testi, audio, video, flussi di click, segnali provenienti da RFID,
cellulari, sensori, transazioni commerciali di vario genere.
Definizione (wikipedia)
6. • Solo in Italia ogni giorno sono creati 2,5 quintilioni di byte di dati, il 90% dei quali
è stato creato solo negli ultimi due anni (IBM).
1 quintilione = 1000000000000000000000000000000 = 1E30
• L’utilizzo delle piattaforme tradizionali per la gestione di tale mole di informazioni
non è una opzione “impossibile” dal punto di vista tecnologico, ma significa
“convertire” dati non strutturati e/o poco correlati in una forma gestibile dai
database relazionali per il loro trattamento.
• Tale processo di conversione richiede una tale quantità di tempo e costi
talmente elevati rispetto all’obiettivo perseguito che l’opzione risulta
semplicemente:
“Economicamente Non Sostenibile”.
Motivazioni
BD-ST
7. • Google: estrazione degli indici dei documenti;
• Facebook: profilazione degli utenti;
• Amazon: fornire suggerimenti di acquisto;
• Walmart: analisi del comportamento di acquisto dei propri clienti (Teradata);
• AT&T: pianifica la riparazione delle celle in base alla Customer Experience;
• Germania: analisi dei propri avversari nei mondiali di Brasile 2014 (SAP);
• Mediaset: sentiment analisi incrociando social media ed altre fonti (IBM);
• Telecom Italia: monitoraggio della rete e produzione di KPI;
• Agenzia delle Entrate: elaborazione dati sul reddito;
Esempi
BD-ST
8. • Migliori prestazioni perché dovuti all’eliminazione di
eventuali colli di bottiglia.
• L’infrastruttura di rete deve essere adeguata al
trasferimento di dataset di dimensioni dell’ordine di
qualche terabyte.
• Sicurezza, al backup e ripristino dei dati, alla
governance.
Infrastruttura (Shared Nothing)
BD-ST
• Richiedono un approccio basato su un modello
decentralizzato.
• Utilizzo di tanti “commodity server” di piccole
dimensioni con risorse di storage gestiti localmente.
• Maggiore flessibilità (costi e scalabilità) perché si
utilizzano migliaia di server di fascia bassa piuttosto
che migliaia di server enterprise e storage condiviso.
SMP: Symmetric Multi Processing
MPP: Massive Parallel Processing
10. • Hadoop è un framework per il calcolo parallelo di dataset molto grandi (ordine
dei petabyte) su un elevato numero di nodi (poche decine a diverse migliaia)
composti da server “standard” (basso costo).
• Il suo utilizzo in scenari tradizionali (elaborazione di singoli record, OLTP) è
fortemente sconsigliato e non avrebbe senso;
• Orientato all’elaborazione batch (Twitter Storm per elaborazione Real-Time).
• Modello di computazione adottato è Map Reduce (Dean e Ghemawat) basato
sul principio “divide et impera” ed ispirato alle funzioni map() e reduce() del LISP.
• 165 organizzazioni censite sulla pagina ufficiale: Twitter, Google, Spotify,
LinkedIn, Last.fm, IBM, Facebook, Ebay, Adobe, etc.
Hadoop
BD-ST
11. • Pensato per realizzare un sistema distribuito di larga scala, senza preoccuparsi
dei problemi legati alla sua gestione: partizionamento dei dati, scheduling dei
thread, controllo dei fallimenti dei nodi, gestione della comunicazione i nodi.
• Rispetto a modelli tradizionali di calcolo parallelo (Grid Computing):
• Utilizza risorse locali e non aree di storage condivise;
• Offre librerie di programmazione semplici e di alto livello;
• Gestisce problemi a livello applicativo invece di sfruttare sistemi hardware di
alta affidabilità;
Hadoop
BD-ST
12. • Hadoop common (strato software
comune con funzioni di supporto);
• YARN (framework per calcolo
distribuito si occupa della gestione
delle risorse);
• Hadoop Distributed File System
(HDFS - derivato da Google's GFS)
• Hadoop MapReduce Framework
(derivato da Google's MapReduce).
Hadoop
BD-ST
HADOOP
Distributed
Storage
(HDFS)
Distributed Processing
(MapReduce)
Common
YARN
14. HDFS
BD-ST
• Ogni file è suddiviso in blocchi (64MB
o 128MB) ridondati su più nodi
(default 3 copie) ospitati su rack
differenti;
• La ridondanza garantisce l’affidabilità
ma anche l’efficienza nel recupero dei
file (coinvolto il nodo più vicino);
• Fornisce al programmatore un modello di storage virtualmente infinito;
• Progettato per gestire un numero elevato di file di dimensioni ragguardevoli
(terabyte);
• Identificazione dei guasti e recovery dei dati è la sua caratteristica principale;
15. HDFS
BD-ST
• Name Node: sono due uno attivo, l’altro in standby. Gestisce il file system:
• Il namespace ovvero elenco dei file e dei blocchi in cui sono suddivisi;
• Le strategie di replica e allocazione dei blocchi;
• Verifica la presenza dei nodi per l’affidabilità.
• Costituisce un single point of failure;
16. HDFS
BD-ST
• Secondary Name Node: di supporto al
NameNode (per l’efficienza) esegue le
operazioni di checkpoint (Checkpoint
Node);
• Backup Node: simile al
CheckpointNode ma mantiene il
namespace in memoria e lo aggiorna
continuamente.
17. HDFS
BD-ST
• Data Node: gestisce fisicamente lo storage e soddisfa le richieste dei client.
• Inviano un heartbeat (ogni 3sec) al NameNode con un block report. Se il nodo è
giù o i blocchi corrotti è avviata la procedura di replica;
• I client contattano il Name Node per conoscere quale Data Node contiene le
informazioni richieste;
18. MapReduce
BD-ST
• MapReduce è basato sul concetto di functional programming dove c’è scarsa
codivisione dei dati;
• Prevede la suddivisione del calcolo in
diverse parti (divide et impera)
processabili in modo autonomo;
• L’implementazione consiste nello
specificare: input, output e funzioni
map e reduce come implementazioni
di classi java.
• L’output finale può essere input di un
nuovo job MapReduce.
19. Word Count
BD-ST
Map(k1,v1) → list(k2,v2)
map(String name, String document)
{
// name: document name
// document: document contents
for each word w in document:
emit (w, 1)
}
Reduce(k2, list (v2)) → list(v3)
reduce(String word, Iterator partialCounts){
// word: a word
// partialCounts: list of aggregated partial
counts
sum = 0
for each pc in partialCounts:
sum += ParseInt(pc)
emit (word, sum)
20. MapReduce
BD-ST
• JobTracker: Execution Plane e Coordination;
• Si occupa della gestione del ciclo di vita dei job MapReduce;
• Privilegia i nodi che contengono i dati o altrimenti seleziona un nodo nello
stesso rack;
• In caso di fault si fa carico della ripetizione del job;
• TaskTracker: eseguono i task (di map o reduce) sotto la direzione del
JobTracker;
21. MapReduce
BD-ST
1. Client sottomette e job al JobTracker e copia i file binari (jar) in HDFS;
2. JobTracker interroga il NameNode per conoscere dove sono collocati i dati
necessari;
3. JobTracker identifica i nodi più vicini ai dati e verifica che abbiano slot disponibili
(data-local, rack-local, cross-rack) quindi crea un piano di esecuzione;
4. TaskTracker esegue il job e riporta al JobTracker attraverso heartbeat;
22. Ecosistema Hadoop
BD-ST
• The Hadoop Ecosystem Table
http://hadoopecosystemtable.github.io/
• Big Data Ecosystem
http://hadoopilluminated.com/hadoop_illuminated/Bigdata_Ecosystem.
html
24. Tika
BD-ST
• Strumento per la l’identificazione e
l’esrtazione di metadati e testo danumerosi
tipi di documenti;
• Formati: HTML, XML, Microsoft Office,
PDF, RTF, EPUB, OpenDocument, ZIP,
TXT, Immagini, Audio, Video, JAR, MBOX,
etc.
• Funzionalità di Mime Type detection,
parsing ed estrazione lingua.
• Utilizzabile sia per la fase di acquisizione
che per quella di
integrazione/arricchimento.
• Facilmente integrabile con Apache Solar.
25. Flume
BD-ST
• Strumento per la movimentazione di grosse quantità di dati da una sorgente
verso una destinazione;
• Sorgente: File di testo, TCP o UDP, Avro, Altro Agent, Personalizabili (in java);
• Destinazioni: HDFS, Hbase, Logger, Avro, Altro Agent, Personalizzabili (in java);
• Scalabile orizzontalmente e dispone di meccanismi di failover e recovery che
garantiscono il delivery dei dati;
• Basata sul concetto di Agent che esegue le seguenti operazioni: raccolta dei dati
(source), passaggio e conservazione (channel) e instradamento(sink);
• Utilizzo tipico è la lettura dei
log da diversi server ed il loro
instradamento verso HDFS,
dopo averli aggregati.
26. Sqoop
BD-ST
• Strumento per il trasferimento dei dati tra database relazionali (RDBMS) e
Hadoop (HDFS, Hbase, Hive);
• Database supportati: Teradata, Netezza, Oracle, MySQL, Postgres, and
HSQLDB;
• Architettura basata su connettori che consente l’estensione attraverso
l’implementazione di plug-in;• Utilizza job MapReduce per l’import
parallelo dei dati opportunamente
partizionati;
• Utilizza l’introspezione per ottenere i
metadati necessari all’import.
• La classe java generata può essere
utilizzata per elaborazione
MapReduce.
sqoop import –connect dbc:mysql://…. –username user –password
password –table tab1 –targhet-dir /folder_hdfs1/folder_hdfs2
27. HCatalog
BD-ST
• Hadoop consente la gestione dei dati indipendentemente dal loro formato grazie
alla mancanza di uno schema fisso;
• Lo schema è applicato nel momento in cui sono utilizzati attraverso
l’applicazione di uno strato di metadati che consentono, agli strati applicativi, di
interagire con i dati con linguaggi di query;
• Compito di HCatalog è si semplificare la creazione e gestione dei metadati e la
loro esposizione agli strumenti che li utilizzano;
• Fornisce un layer di metadati che consente di avere una visione relazionale dei
dati, organizzandoli in tabelle e database;
28. Hive
BD-ST
• Strumento di data warehousing in grado di manipolare grandi quantità di dati
presenti in sistemi distribuiti (OLTP vs OLAP);
• ETL: caricamento e manipolazione dei dati;
• Consente una strutturazione relazionale dei dati;
• Linguaggio simile a SQL (HiveQL);
• L’output del compilatore è una serie di job MapReduce
che si occupano dell’esecuzione delle query;
• Si avvale di un repository (metastore) che conserva i
metadati di ciascuna tabella oppure utilizza HCatalog;
• Lento quindi non adatto ad interrogazioni real-time;
• Non destinato a rimpiazzare SQL ma è uno strumento
per creare job su grandi moli di dati;
29. HBase
BD-ST
• Schemaless, Wide Table, Denormalized;
• Studiato per lavorare su cluster di nodi, ognuno
con il proprio storage, la propria cache e la
propria capacità di computazione;
• Consente l’accesso rapido (random, low
latency) ad una singola riga fra miliardi di
record, diversamente HDFS consente un
accesso batch ai dati (high latency).
• Un Data Base distribuito (modellata su BigTable di Google) column-oriented,
lavora sopra HDFS;
• Tratta sia dati strutturati che non strutturati;
• E’ un database relazionale ma consente una modellazione flessibile e
dinamica dei dati in quanto non si cura dei tipi;
30. HBase
BD-ST
• Fortemente basato su HDSF;
• In corrispondenza dei NodeName e
dei DataNode sono presenti le
istanze dei servizi HMaster e
RegionServer;
• HMaster ha funzioni di
monitoraggio, gestisce le modifiche
ai metadati, load balancing,
assegnazione region;
• I RegionServer gestiscono le
cosiddette region, elemento di base
per la distribuzione delle tabelle;
• I dati sono organizzati in una
gerarchia Tabella->Region->…
31. Pig
BD-ST
• Piattaforma per semplificare l’analisi e manipolazione di grandi quantità di dati;
• Come Hive, nasce per evitare la realizzazione job MapReduce che può risultare
oneroso;
• Basato su:
• PigLatin: linguaggio di script per la gestione di flussi di dati;
• Pig Engine: parsa, ottimizza ed esegue gli script PigLatin come una serie di
job MapReduce che poi sottomette al cluster Hadoop;
• Consente l’utilizzo di Hadoop a quanti con conoscono Java e MapReduce
offrendo un approccio semplificato;
• Non richiede nessuna installazione sui cluster in quanto si compone
semplicemente di un client che sottomette e monitorizza i job creati;
33. Zookeeper
BD-ST
• Fornisce una infrastruttura centralizzata e dei servizi che consentono il
coordinamento di applicazioni distribuite (Distributed Coordination Service);
• Configurazione centralizzata dei nodi;
• Sincronizzazione degli oggetti comuni nel cluster;
• Serializzazione;
• Consistenza sequenziale;
• Atomicità;
• Immagine singola del sistema;
• Affidabilità;
• Tempestività.
34. Ambari
BD-ST
• Strumento di gestione e monitoraggio del cluster Hadoop;
• Fornisce una interfaccia web per l’amministrazione;
• Supporta: HDFS, MapReduce, Hive, HCatalog, HBase, Zookeeper, Oozie, Pig,
Sqoop;
• Utilizza dei wizard per l’installazione;
• Fornisce tool per l’avvio e l’arresto dei servizi sui vari nodi;
• Effettua monitoraggio e reporting anche tramite alert e-mail.
35. Altro
BD-ST
• Oozie: motore di workflow;
• Cassandra: database column-oriented (Amazon);
• Mahout: libreria per machine learning;
• Hue: interfaccia web per l’analisi dei dati con hadoop;
• Whirr: librerie per eseguire cloud services;
• Knox: rest api gateway per l’interazione conl cluster hadoop;
• Kafka: message broker distribuito per gestione di feed in real-time;
• Storm: real-time computation system;
• Spark: data analytic cluster computing framework;
Non Apache
• R: software per analisi statistiche di base ed avanzate (librerie RHive e
RHadoop);
• Impala: motore di esecuzione di query distribuite (Cloudera) con prestazioni real-
time;
• HAWQ: motore di esecuzione di query distribuite (Pivotal);
36. BD-ST
Bibliografia ed Approfondimenti
• http://hadoop.apache.org/
• http://hadoopecosystemtable.github.io/
• http://storm.incubator.apache.org/
• J. Dean, S. Ghemawat, MapReduce: Simplified data processing on
large clusetrs, in OSDI’04: 137-150.
• Alessandro Rezzani: Architettura, tecnologie e metodi per l’utilizzo
di grandi basi di dati.
• Oracle BigData Virtual Machine
http://www.oracle.com/technetwork/database/bigdata-
appliance/oracle-bigdatalite-2104726.html
• Hortonworks Sandbox
http://hortonworks.com/products/hortonworks-sandbox/
38. BD-ST
Bibliografia ed Approfondimenti
• http://hadoop.apache.org/
• http://hadoopecosystemtable.github.io/
• http://storm.incubator.apache.org/
• J. Dean, S. Ghemawat, MapReduce: Simplified data processing on
large clusetrs, in OSDI’04: 137-150.
• Alessandro Rezzani: Architettura, tecnologie e metodi per l’utilizzo
di grandi basi di dati.
Editor's Notes
Concordare con i grafico i Font
NAME NODE: mantiene lo stato nel file fsimafe e le modifiche nell’edit log. Al successivo start il Name Node esegue il merge tra fsimage ed il log. Quindi fsimage viene salvato ed il log pulito.
SECONDARY NAME NODE: per evitare che il log diventi troppo grande e rallenti il successivo startup del NAME NODE il seconary node periodicamente esegue il merge scaricando fsimage ed i log, quindi ricaricando le informazioni su NAME NODE.
BACKUP NODE: riceve uno stream dal name node periodicamente ed esegue il merge in memoria.
Framework di programmazione per l’elaborazione dei dati in parallelo;
La programmazione multithreading presenta una complessità dovuta al coordinamento dell’accesso alle risorse;
I task non hanno stato (condiviso);
Possibili input:
default txt imput format che splitta il file line by line;
binary input format;
database input format;
record input format;
HiveQL ha solo select e non ha insert o update.
RDBMS = Schema on Write ovvero ad ogni inserimento è verificato il tipo del dato rispetto allo schema, questo è il motivo per cui il caricamento è lento mentre le query sono veloci perchè permettono l’uso degli indici;
HIVE = Schema on Read quindi il caricamento dei dati p veloce mentre la lettura è più lenta pechè lo schema deve essere verificato.
Non-relational database derivato da Bigtable di Google
Column oriented database management system on top of HDFS
Progettato per gestire tabelle molto grandi sia in termini di ricghe che di colonne
Quanto utilizzarlo:
Quando si hanno milioni/miliardi di dati. Se si hanno pochi migliaia o milioni di dati non è la scelta giusta. Meglio un RDBMS tradizionale in quanto I dati risiederebbero su un singolo nodo massimo due e gli altri rimarrebbero inutilizzati.
Quando siamo sicuri di non avere bisogno delle caratteristiche di un RDBMC (colonne tipizzate, indici, transazioni, SQL avanzato). Il porting di una applicazione scritta su un RDBMS su Hbase richiede un completo ridisegno.
Quando abbiamo hardware a sufficienza. HDFS non lavora bene su meno di 5 nodi (HDFS ne richiede almeno 3 per la replica più il NameNode).
Le region sono automaticamente splittate e distribuite sui nodi.