2012-10-29 10 views
8

Come indica il titolo, quando un client richiede di scrivere un file su hdf, come fa l'HDFS o il nodo nome a scegliere quale datanode memorizzare il file? Gli hdf cercano di memorizzare tutti i blocchi di questo file nello stesso nodo o nello stesso rack nello stesso rack se è troppo grande? Gli hdf forniscono a qualsiasi API le applicazioni per archiviare il file in un determinato datanode come preferisce?in che modo hdf sceglie un datanode per memorizzare

risposta

8

Il codice per la scelta del datanode è nella funzione ReplicationTargetChooser.chooseTarget().

Il commento dice che:

La strategia di posizionamento replica è che se lo scrittore è un DataNode, la prima replica è posto sulla macchina locale, altrimenti un DataNode casuale. La seconda replica è posizionata su un datanode che si trova su un rack diverso. La terza replica viene posizionata su un datanode che si trova su lo stesso rack della prima replica.

Non fornisce alcuna API per le applicazioni per archiviare il file nel datanode che desiderano.

+0

la mia versione hadoop è 0.20.2 – gaoxinbo

+1

per hadoop 2+ verifica risposta da Praveen Sripati –

10

come fa l'HDFS o il nodo nome a scegliere quale datanode memorizzare il file?

HDFS ha un BlockPlacementPolicyDefault, controllare la documentazione API per ulteriori dettagli. Dovrebbe essere possibile estendere BlockPlacementPolicy per un comportamento personalizzato.

Gli hdf forniscono API per le applicazioni per archiviare il file in un determinato datanode come preferisce?

Il comportamento di posizionamento non dovrebbe essere specifico per un particolare codice dati. Questo è ciò che rende HDFS resiliente al fallimento e anche scalabile.

2

Ora con la patch Hadoop-385, possiamo scegliere la politica di posizionamento dei blocchi, in modo da posizionare tutti i blocchi di un file nello stesso nodo (e allo stesso modo per i nodi replicati). Leggi questo blog su questo argomento - guarda la sezione dei commenti.

5

Se qualcuno preferisce classifiche, ecco un immagine (source):
enter image description here

-1

this image shows how replication process is done[][1]

Si può vedere che, quando NameNode istruisce DataNode per memorizzare i dati. La prima replica viene archiviata nel computer locale e altre due repliche vengono create su un altro rack e così via.

Se una replica non riesce, i dati vengono archiviati da un'altra replica. Le probabilità di fallire in ogni replica sono come la caduta del ventilatore sulla testa mentre dormivi: p a questo punto ci sono molte meno possibilità.

Problemi correlati