1 Big Data Stack Tecnologico Data
1
Big Data
Stack Tecnologico
Data
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
Team Leader presso Consulthink
SpA
https://www.linkedin.com/in/massimorom
ano
Relatore
BD-ST
BD-ST
Definizione?
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)
• 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
• 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
• 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
Tecnologie
BD-ST
Big
Data
Acqu
isiz
ion
e
Calc
olo
/
Ana
lisi
Inte
gra
zio
ne
/ Arric
chim
ento
Immagazzinamento Organizzazione
http://wiki.apache.org/hadoop/PoweredBy
• 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
• 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
• 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
YA
RN
Architettura Hadoop
BD-ST
MASTER
Node
Name
Job
Tracker
SLAVE
Data
Name
Task
Tracker
SLAVE
Data
Name
Task
Tracker
CLIEN
T APP.
1000s
Svincola dai problemi relativi a:
- Collocazione dei file;
- Gestione dei fallimenti;
- Scomposizione del calcolo;
- Gestione della scalabilità;
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;
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;
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.
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;
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.
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)
}
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;
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;
Ecosistema Hadoop
BD-ST
• The Hadoop Ecosystem Table
http://hadoopecosystemtable.github.io/
• Big Data Ecosystem
http://hadoopilluminated.com/hadoop_illuminated/Bigdata_Ecosystem.
html
HDFS (Hadoop Distributed File System)
HCatalog (Table & Schema Management)
Mapreduce (Distributed Programming Framework)
HIVE (SQL)
PIG (Data Flow)
Flu
me
/Sq
oo
p/T
ika
(D
ata
inte
gra
tion)
Hb
ase
(C
olu
mnar
NoS
QL S
tore
)
Zookeeper (Coordination)
Am
ba
ri
(Managem
ent)
Ecosistema Hadoop
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.
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.
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
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;
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;
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;
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->…
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;
Pig
BD-ST
• Notevole incremento
della produttività.
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à.
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.
Altro
BD-ST
• Oozie: motore di workflow;
• Cassandra: database column-oriented (Amazon);
• Mahount: 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);
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/
40
Grazie per l’attenzione
Contatti
Web: www.consulthink.it
Mail: [email protected]
Telefono:+39-06 4549 2416
Fax:+39-06 4549 2454
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.