Anteprima
Vedrai una selezione di 13 pagine su 58
Corso Modelli e tecniche per big data Pag. 1 Corso Modelli e tecniche per big data Pag. 2
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Corso Modelli e tecniche per big data Pag. 6
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Corso Modelli e tecniche per big data Pag. 11
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Corso Modelli e tecniche per big data Pag. 16
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Corso Modelli e tecniche per big data Pag. 21
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Corso Modelli e tecniche per big data Pag. 26
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Corso Modelli e tecniche per big data Pag. 31
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Corso Modelli e tecniche per big data Pag. 36
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Corso Modelli e tecniche per big data Pag. 41
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Corso Modelli e tecniche per big data Pag. 46
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Corso Modelli e tecniche per big data Pag. 51
Anteprima di 13 pagg. su 58.
Scarica il documento per vederlo tutto.
Corso Modelli e tecniche per big data Pag. 56
1 su 58
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

HDFS

È il file system distribuito di Hadoop, progettato per HW economico e per essere altamente

tollerante ai guasti, fornisce un accesso ad elevato numero di operazioni al secondo( Throughput)

Innanzitutto, la prima assunzione è che ci sia sempre qualche componente che non funziona e

quindi essere sempre pronto al recovery.

La seconda è che Hadoop non è progettato per applicazioni interattive, ma di tipo batch;

l’enfasi è

dunque, più sul Throughput per accedere ai dati (grazie al parallelismo) che sulla latenza.

La terza è sulla dimensione: supportare dati molto grandi è la norma memorizzare su HDFS dati

di TB i file system standard hanno dei limiti non sono in grado di gestire file di queste dimensioni.

Tra gli obiettivi troviamo il modello write-once-read-many, ovvero, quando si accede ad un file in

un sistema distribuito sorge il problema della consistenza: se intendo leggere un file da un’altra

macchina, ci si interroga su quale sia la copia alla quale sto accedendo.

In Hadoop si elimina questo problema consentendo una solo scrittura di un file, dunque, un

aggiornamento comporta la produzione di ulteriori file, ciò chiaramente crea problemi di

saturazione, in ogni caso, lo scenario dei file immutabili, è stato decisivo per ridurre il problema

della consistenza.

Il secondo obiettivo è che spostare il calcolo è più economico di spostare il dato, cioè,

nodo è più efficiente che spostarlo su un’altra

effettuare il calcolo sulla macchina dove è presente il

macchina (ciò non è sempre possibile).

L’ultimo principio è la portabilità rispetto ad HW e SW eterogeneo, Hadoop è tutto realizzato in

java (portabilità). HDFS usa un’architettura master/slave,

un cluster HDFS consiste in:

• NameNode(server master) che

esegue operazioni sul namespace del file

system come aprire, chiudere e rinominare

file e directory e determina la mappatura

dei blocchi sui DataNode.

• DataNode sono responsabili della

gestione delle richieste di lettura e scrittura

da client del file system e eseguire la

creazione, l'eliminazione e la replica di

blocchi istruzione dal NameNode.

Un file è diviso in blocchi, i blocchi sono replicati e assegnati ai vari DataNodes.

Il NameNode esegue le operazioni legate al naming dei file (nome del file, seguendo il meccanismo

dei path di UNIX) e gestisce le operazioni tipiche (apertura, chiusura, creazione), gestisce inoltre la

mappatura sui i vari DataNodes.

I DataNode sono responsabili delle richieste di lettura e scrittura ed effettuano fisicamente le

operazioni.

Si può lavorare in HDFS con comandi simili a quelli di UNIX, è possibile creare directory e

memorizzare file ecc. Inoltre, è possibili spedicare il numero di repliche.

il NameNode usa un log transazionale (Edit

Log) per poter memorizzare in maniera

permanente le modifiche del FS serve per le

operazioni di rollback eventuali., il log è

memorizzarti nel file system locale del

NameNode.

FSImage contiene il mapping di tutti i file verso i

vari DataNode, sempre memorizzato nel FS

locale, se per sfortuna si perdesse questo file non

potremmo accedere ai file.

Tutte le operazioni di accesso in w/r sono mediate dal client HDFS che può essere il terminale o la

nostra applicazione Java M-R che al suo interno effettua delle operazioni sui file.

Il client può fare operazioni di apertura, lettura e chiusura di un file, se esse sono soddisfatte

chiedono al NN quali sono le locazioni dei blocchi.

La write è simile, per gestire la ridondanza, il DataNodes fa una pipeline di write: scrive su sé stesso

e sui nodi indicati dal NN. l’overhead della

NN e DNs sono oggetti java che girano, JVM è minimo ed è trascurabile

rispetto al vantaggio introdotto in portabilità.

Si può accedere al HDFS mediate le API di Java oppure la FS shell, un terminale da far partire

all’interno di quello di Linux. Inoltre, in HDFS è presente la cartella trash, una cartella

temporizzata: un cestino che vien svuotato di default ogni 6 ore.

YARN

Il sistema di gestione delle risorse detto anche Yet Another Resource Negotiator si occupa di

allocare le risorse per le diverse applicazioni che girano in un cluster Hadoop.

È fondamentale schedulare i task, le prime versioni non lo permettevano ed era tutto demandato al

c’era un accoppiamento stretto tra il motore

processo master, di esecuzione e HDFS.

In un’architettura cluster si colloca tra il file system e il motore d’esecuzione, può allocare risorse in

modo dinamico.

Lo scheduler di default è il classico FIFO, tuttavia si possono aggiungere dei plugin con degli

scheduler da noi definiti, come il Fair Scheduler.

È presente un modulo, JobTracker, che supervisiona il job(intera applicazione) stesso che a sua

volta crea dei TaskTrackers che invece eseguono e monitorano i singoli task map-reduce

MapReduce e Hadoop (parte 3) 12/11/2020

Riprendiamo YARM Il

resourceManager è il gestore

globale, accetta i job dagli utenti, li

schedula, e alloca le risorse

necessarie per l’esecuzione.

In ogni nodo di elaborazione è

presente il cosiddetto

NodeManager che interagisce con il

resourceManager da cui riceve le

cose da fare e a cui invia

informazioni di monitoraggio su

cosa sta facendo.

L’ApplicationManager è un

processo che viene creato per ogni applicazione che viene seguita.

In un nodo si avrà un solo NodeManager, ,ma tanti ApplicationManager quante sono le

applicazioni che si stanno eseguendo.

Il client interagisce con il resourceManager che a sua volta interagisce con i vari NodeManager e

ognuno di essi si occupa di eseguire l’applicazione specifica che gira sul nodo (non necessariamente

un’applicazione Hadoop) Ottimizzazione della località dei dati

Spostare i dati non è conveniente, si perde del tempo

che talvolta è superiore al tempo di elaborazione.

L’idea è quello di associare il task al nodo dove si trova

il dato; non dobbiamo usare la banda. Talvolta, però, il

blocco del dato su HDFS non può essere processato in

loco perché occupato con altre elaborazioni; si cerca di

L’ultimo

spostarlo su un altro nodo dello stesso reck.

caso è quello in cui anche questo scenario è

impraticabile e si sposta fuori dal reck.

Reducer

diversi possibili dataflow all’interno di un

esistono

singolo job M-R. In alcuni casi, non è presente la

fase di reducing o, in altri casi, può essere

sufficiente un singolo reducer.

Avremo un certo numero di mapper, n, segue la

fase di shuffling e infine il reducing. Il numero di

blocchi che ogni mapper produce devono

sempre essere pari a quello dei reducer,

Nel caso di due reducer i mapper produrranno un

output diviso in due blocchetti; ogni chiave viene

passata ad una funzione di hash che genera o 0

(primo blocchetto e quindi primo reducer) o 1

(secondo

blocchetto).

Tutti i primi blocchetti vengono copiate sul FS

del primo reducer, i secondo invece in quello

del secondo reducer.

Dopodiché avvengono le due merge. A differenza

del caso precedente, l’output è suddiviso in due

se siamo interessati all’unione è

file,

necessario effettuare un’altra procedure, anche M-R.

Il partitioner è un componente implementato dal programmatore che definisce un meccanismo di

assegnamento delle chiavi intermedie (e valori) non sulla base dell’ hash ma sulla base di una

politica da noi scelta.

Nel caso in cui sono necessarie solo operazioni di mapping; in questo caso, il valore che

normalmente è intermedio diventa il valore finale. In alcuni casi, per efficienza, si può definire un

combiner che effettua una riduzione locale sul nodo del mapper per evitare di trasmettere dati

disaggregati ai vari reducer determinando un inutile spreco di banda, il codice è praticamente quello

del reducer.

Installare Hadoop, diversi modo di fare l’installazione

1) Cluster singolo nodo, sempre possibile portarlo su un cluster vero, installiamo su una macchina

linux la distribuzione Hadoop

2) Utilizzare una macchina virtuale, ambiente di sviluppo indipendente dalla macchina

3) Usare un ambiente su Cloud, naturalmente a pagamento

Configurazione Hadoop, per ottenere buone performance

1) Dimensione del blocco HDFS, di norma di 128mb e ogni blocco replicato 3 volte per effettuare

un buon dimensionamento bisognerebbe capire il tempo che impiega il mapper ad elaborare il

singolo blocco(se mal gestito si potrebbe perdere più tempo a lanciare il mapper che ad eseguire

operazioni sul blocco stesso)

2) Configurare il numero di reducer di norma impostato a 1 possiamo mettere 0 o n

3) Tipo file system (EXT 4)

Hive e Pig 19/11/2020

Si posizionano nell’ecosistema Hadoop a livello dei sistemi verticali; Pig si colloca tra i linguaggi

di scripting (Latin), Hive permette di scrivere applicazioni di analisi su dati con un linguaggio

di quering simile a SQL.

Hive è un’applicazione del data warehousing su Hadoop, serve per eseguire le tipiche

operazioni del datawarehouse utilizzando HQL, una variante di SQL.

Le tabelle interrogate sono memorizzate in HDFS sottoforma di file piatti, originariamente

introdotto da Facebook, da molto tempo è diventato open-source.

Pig è un sistema di data processing su

con l’attenzione su analisi di tipo

larga scala

dataflow. Il vantaggio fondamentale è che,

con codice molto compatto, si permettono

operazioni che scritte in java sarebbero molto

più verbosi.

Originariamente sviluppato da Yahoo, è

l’idea

oggi open-source comune è fornire un

linguaggio più ad alto livello rispetto a quelli del

framework e compilati in job Hadoop.

Hive

Molti lavoratori del BigData non sono Informatici, ma provengono da altri domini

professionali, Hive è più ad alto livello. Fare querying su tabelle molto grandi e oneroso, dunque

Hive non lavora su DBMS relazionali, ma su tabelle costruite a partire da dati, memorizzati

come file piatti e memorizzati su HDFS, seguendo le sue politiche di suddivisione e sfruttandone

i vantaggi.

L’alternativa sarebbe riscrivere direttamente in Hadoop che, però, è più complicato, il codice è

troppo customizzato al dataset, è soggetto ad errori, avviene quasi sempre che si hanno più fasi

MR e, inoltre, non tutti conoscono SQL.

L’idea è quella di trasformare dei dati non strutturati in tabelle, a prescindere dal formato

originario, su queste tabelle sarà possibile eseguire query simili a quelle di SQL.

l’utente

Dettagli
Publisher
A.A. 2021-2022
58 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher antonio199696 di informazioni apprese con la frequenza delle lezioni di Modelli e tecniche per big data e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università della Calabria o del prof Trunfio Paolo.