Big data architectures
Si parla di big data quando il volume di dati da amministrare supera le capacita di storage e gestione dei normali sistemi DBMS, possibili contesti sono:
- analisi di dati per infrastrutture IOT
- analisi di dati di grandi banche dati
- accentratori di flussi di dati
In queste situazioni il paradigma si sposta da un potenziamento della singola istanza che gestisce il dato a un aumento del numero di istanze (scale out non scale up)
Questo porta alla necessita di gestire i dati all’interno di cluster di macchine connesse in rete e limitare i flussi di trasferimento di dati non necessari, aumentando il numero di macchine e di componenti hardware aumentano anche le probabilità che ci siano guasti hardware e software, e necessario pensare sistemi in grado di operare in ambienti ostili
Gestire i dati in infrastrutture distribuite: Distributed Filesystem DFS
Per gestire i dati in questi scenari si fa uso di filesystem distribuiti, questi adoperano secondo i seguenti principi
- i file sono divisi in chunks
- i chunk sono replicati nel cluster
- le copie sono distribuite in nodi distinti
- il file master node contiene informazioni di localizzazione delle copie
- il master node e replicato
- una directory sa dove e collocato il master node
- la directory e replicata
- tutti i nodi del cluster sanno dove sono le copie della directory
una delle implementazioni più note e quella di HADHOOP
Gestire la concorrenza: Map Reduce
Paradigma di sviluppo pensato per gestire la concorrenza in ambienti distribuiti come i datacenter, il codice viene suddiviso in due fasi:
- map i chunk di dati vengono convertiti in coppie
<key,value>
- reduce le coppie con lo stesso valore di
<key>
vengono raggruppate e combinate nel risultato
flowchart TD A[map] B[map] C[map] D[aggregation layer] E{{reduce}} F{{reduce}} A & B & C --> D --> E & F
Le operazioni di map e reduce sono eseguite su nodi in parallelo, secondo un paradigma SIMD
I nodi vengono assegnati al cluster in base a dove si trovano i dati in input interessati dall’elaborazione, in questo caso si utilizzano
Map reduce, execution
Al momento dell’esecuzione, il supporto runtime crea un processo jobtracker che a sua volta crea un certo numero di tasktracker distribuiti nei vari nodi del cluster PREVIOUS