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
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.
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.
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.
Se qualcuno preferisce classifiche, ecco un immagine (source):
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à.
- 1. In che modo il sistema sceglie il corretto Page Table?
- 2. In che modo la compilazione sceglie quale funzione modello chiamare?
- 3. In che modo Hive sceglie il numero di riduttori per un lavoro?
- 4. percorso file in hdf
- 5. Modo efficiente per memorizzare gli articoli riordinabili in un database
- 6. C'è un modo per memorizzare date in arabo con Postgres?
- 7. Hadoop: processo Datanode ucciso
- 8. Esiste un modo per memorizzare o materializzare un oggetto IEnumerable?
- 9. C'è un modo per leggere un file .txt e memorizzare ogni riga nella memoria?
- 10. Esiste un modo migliore per memorizzare un dizionario twoway piuttosto che archiviare il suo inverso separato?
- 11. In che modo MVC3 sceglie quale ViewEngine utilizzare se ho più motori nella raccolta ViewEngines?
- 12. Scrive i dati in un file hdf utilizzando il multiprocessing
- 13. Il CSS sceglie un colore casuale dall'array
- 14. MySQL miglior modo per memorizzare stringhe lunghe
- 15. Modo memoria efficiente per memorizzare le stringhe
- 16. Come leggere i dati hdf in Octave
- 17. Il modo migliore per memorizzare un array nel database MySQL?
- 18. pyspark: come verificare se un file esiste in hdf
- 19. Trasmettere dati direttamente in hdf senza copiare
- 20. È possibile archiviare dati relazionali in hdf
- 21. Qual è il modo migliore per memorizzare un gruppo di costanti che utilizza il mio programma?
- 22. modo corretto per memorizzare un'eccezione in una variabile
- 23. modo efficiente per memorizzare le immagini in Android
- 24. Il modo migliore per memorizzare i dati gerarchici in hbase
- 25. Il modo migliore per memorizzare la password in sql
- 26. Il modo più efficiente per memorizzare l'indirizzo IP in MySQL
- 27. NSOpenPanel sceglie una directory (non un file)
- 28. Il modo migliore per memorizzare i dati in BoltDB
- 29. Che cosa devo considerare quando si sceglie un quadro di iniezione di dipendenza per NET
- 30. Un modo per fare in modo che Kinetic.js supporti IE8?
la mia versione hadoop è 0.20.2 – gaoxinbo
per hadoop 2+ verifica risposta da Praveen Sripati –