Qualcuno può fornire un'analisi dettagliata del consumo di memoria del namenode? O c'è qualche materiale di riferimento? Non riesci a trovare materiale nella rete. Grazie!Il consumo di memoria del namenode di hadoop?
risposta
Suppongo che il consumo di memoria dipenda dalla configurazione HDFS, quindi dipende dalla dimensione complessiva dell'HDFS e dipende dalla dimensione del blocco. da Hadoop NameNode wiki:
Utilizzare un buon server con molta RAM. Più RAM hai, più grande è il file system, o più piccola è la dimensione del blocco.
Da https://twiki.opensciencegrid.org/bin/view/Documentation/HadoopUnderstanding:
NameNode: Il server di metadati nucleo di Hadoop. Questo è il pezzo più importante del sistema e può esserci solo uno di questi. Questo memorizza sia l'immagine del file system che il journal del file system. Il namenode conserva tutte le informazioni di layout del file system (file, blocchi, directory, autorizzazioni, ecc.) E le posizioni dei blocchi. Il layout del filesystem è persistente su disco e le posizioni dei blocchi vengono mantenute esclusivamente in memoria. Quando un client apre un file, il namenode indica al client le posizioni di tutti i blocchi nel file; il cliente quindi non ha più bisogno di comunicare con il namenode per il trasferimento dei dati.
stesso sito raccomanda quanto segue:
NameNode: Si consiglia almeno 8 GB di RAM (minima è 2GB RAM), preferibilmente 16 GB o più. Una regola empirica è di 1 GB per 100 TB di spazio su disco grezzo; i requisiti effettivi sono circa 1 GB per milione di oggetti (file, directory e blocchi). I requisiti della CPU sono tutte le moderne CPU del server multi-core. In genere, il namenode utilizzerà solo il 2-5% della CPU. Poiché si tratta di un singolo punto di errore, il requisito più importante è l'hardware affidabile piuttosto che l'hardware ad alte prestazioni. Suggeriamo un nodo con alimentatori ridondanti e almeno 2 dischi rigidi.
Per un'analisi più dettagliata di utilizzo della memoria, controllare questo link out: https://issues.apache.org/jira/browse/HADOOP-1687
Si potrebbe anche trovare questa domanda interessante: Hadoop namenode memory usage
Ci sono diversi limiti tecnici al NameNode (NN) , e di fronte a nessuno di essi limiterà la tua scalabilità.
- Memoria. NN consuma circa 150 byte per ogni blocco. Da qui puoi calcolare la quantità di RAM necessaria per i tuoi dati. C'è una buona discussione: Namenode file quantity limit.
- IO. NN sta facendo 1 IO per ogni modifica al filesystem (come creare, eliminare il blocco ecc.). Quindi il tuo IO locale dovrebbe consentire abbastanza. È più difficile stimare quanto è necessario. Tenendo conto del fatto che siamo limitati nel numero di blocchi dalla memoria, non rivendicherai questo limite a meno che il tuo cluster non sia molto grande. Se lo è, considera SSD.
- CPU. Il Namenode ha un considerevole carico che tiene traccia dello stato di salute di tutti i blocchi su tutti i datanode. Ogni datanode una volta un periodo di tempo riporta lo stato di tutto il suo blocco. Di nuovo, a meno che il cluster non sia troppo grande, non dovrebbe essere un problema.
calcolo Esempio 200 di cluster nodo 24 TB/nodo 128MB dimensione del blocco fattore replica = 3
Quanto spazio è richiesto?
blocchi = 200 * 24 * 2^20/(128 * 3)
~ 12 milioni blocchi ~ 12.000 MB di memoria.
Suppongo che dovremmo fare la distinzione tra come la memoria del namenode viene consumata da ciascun oggetto namenode e le raccomandazioni generali per dimensionare l'heap del namenode.
Per il primo caso (consumo), AFAIK, ciascun oggetto namenode contiene una memoria media di 150 byte. Gli oggetti Namenode sono file, blocchi (senza contare le copie replicate) e directory. Quindi per un file che occupa 3 blocchi questo è 4 (1 file e 3 blocchi) x150 byte = 600 byte.
Per il secondo caso di dimensione heap consigliata per un namenode, si consiglia in genere di riservare 1 GB per 1 milione di blocchi. Se si calcola questo (150 byte per blocco) si ottengono 150 MB di consumo di memoria. Puoi vedere che questo è molto meno di 1 GB per 1 milione di blocchi, ma dovresti anche prendere in considerazione il numero di dimensioni dei file, le directory.
Immagino che sia un consiglio sicuro. Controllare i seguenti due link per una discussione più generale ed esempi:
Sizing NameNode Heap Memory - Cloudera
- 1. Recuperare Hadoop NameNode mancata
- 2. Hadoop - il namenode non si avvia
- 3. Impossibile avviare il namenode in hadoop?
- 4. Datanode Hadoop, namenode, secondario-namenode, job-tracker e task-tracker
- 5. QTreeView consumo di memoria
- 6. rotaie delayed_job problema del consumo di memoria
- 7. Consumo di memoria del webkit mobile
- 8. Consumo di memoria KDB/Q
- 9. Algoritmo di Dijkstra: consumo di memoria
- 10. Strategia per la gestione del consumo di memoria
- 11. Come ridurre il consumo di memoria di phantomjs?
- 12. Riduci il consumo di memoria in fase di sviluppo
- 13. Come registrare il consumo di memoria su Linux?
- 14. Android: consumo di memoria costante/dumpGfxInfo()
- 15. Limitare il consumo di memoria JVM in un contenitore Docker
- 16. Errore "Connessione rifiutata" per Namenode-HDFS (Problema Hadoop)
- 17. In che modo il caching influisce sul consumo di memoria?
- 18. Consumo di memoria enorme per il semplice multithreading Haskell
- 19. Il namenode Hadoop deve essere formattato dopo l'avvio di ogni computer
- 20. Come misurare il consumo totale di memoria del processo corrente a livello di programmazione in .NET?
- 21. Valori di riduzione Hadoop in memoria?
- 22. Consumo di memoria su uno script di iterazione
- 23. Consumo di memoria di un flusso Scala parallelo
- 24. errore nel namenode che inizia
- 25. Specificazione dei limiti di memoria con hadoop
- 26. Qualche comando per ottenere un namenode attivo per il servizio dei nomi in hadoop?
- 27. Gran numero di tabelle e consumo di memoria Ibernazione
- 28. In Pharo, come è possibile misurare il consumo totale di memoria totale del sistema?
- 29. Qual è il significato delle eccezioni EOF nelle connessioni hadoop namenode da hbase/filesystem?
- 30. Consumo di memoria della funzione NumPy per la deviazione standard