Upload
consulthinkspa
View
447
Download
14
Embed Size (px)
DESCRIPTION
Descrizione delle principali tecnologie abilitanti alla gestione dei Big Data, con particolare attenzione all’ecosistema che gravita intorno al framework Hadoop di Apache.
Citation preview
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.