Ho cercato e non ho trovato molte informazioni relative ai processi di Hadoop Datanode che muoiono a causa del limite di sovraccarico del GC superato, quindi ho pensato di pubblicare una domanda."Limite di sovraccarico GC superato" su Hadoop .20 datanode
Stiamo eseguendo un test in cui è necessario confermare che il cluster Hadoop può gestire la presenza di circa 3 milioni di file memorizzati (attualmente un cluster a 4 nodi). Stiamo usando una JVM a 64 bit e abbiamo assegnato 8 g al namenode. Tuttavia, poiché il mio programma di test scrive più file su DFS, i datanode iniziano a decomporsi con questo errore: Eccezione nel thread "DataNode: [/ var/hadoop/data/hadoop/data]" java.lang.OutOfMemoryError: limite di sovraccarico del GC superato
Ho visto alcuni post su alcune opzioni (GC parallelo?) Immagino che possa essere impostato in hadoop-env.sh ma non sono troppo sicuro della sintassi e sono una specie di novizio, quindi non ha deluso come è fatto. Grazie per l'aiuto qui!
Solo un aggiornamento qui per gente: @ 1.5 milioni di file in dfs, quando la mia JVM a 64 bit era a 1g (impostazione predefinita) i nodi dati iniziarono a morire con questo errore. Quando l'ho aumentato a 2g, è andato via fino a circa 3 milioni di file. Mi chiedo se questo tipo di memoria sia un problema noto o no e, in tal caso, quali altri consigli posso provare a risolverlo? – hatrickpatrick
come detto da Tejas Patil, la dimensione predefinita del blocco è 64 MB. Hadoop carica i metadati per ogni file in memoria ogni volta che viene eseguito. Più file hai, più memoria occuperà. Se questi file sono molto più piccoli delle dimensioni di blocco predefinite e hai la possibilità di farlo, prova a combinare i file in file più grandi per archiviarli in HDFS. solo un pensiero :) – sufinawaz