1
Big DataStack 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/massimoromano
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
BigD
ata
Acqu
isizio
ne
Calco
lo /
Anal
isi
Integrazione / Arricchimento
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
YARN
Architettura Hadoop
BD-ST
MASTER
Node Name
Job Tracke
r
SLAVE
Data Name
Task Tracke
r
SLAVE
Data Name
Task Tracke
r
CLIENT 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 Tablehttp://hadoopecosystemtable.github.io/
• Big Data Ecosystemhttp://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)
Flum
e/Sq
oop/
Tika
(Dat
a in
tegr
atio
n)
Hbas
e(C
olum
nar N
oSQL
Sto
re)
Zookeeper(Coordination)
Amba
ri(M
anag
emen
t)
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);• 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);
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 Sandboxhttp://hortonworks.com/products/hortonworks-sandbox/
40
Grazie per l’attenzione
ContattiWeb: www.consulthink.itMail: [email protected]:+39-06 4549 2416Fax:+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.