Come posso bloccare la cache utente di un processo Hadoop o Spark in modo che la cache non utilizzi troppo spazio su disco in Amazon EMR?
La cache dell'utente del processo Apache Hadoop o Apache Spark occupa tutto lo spazio su disco della partizione. Il processo Amazon EMR non viene completato o il servizio NameNode HDFS è in modalità sicura.
Breve descrizione
In un cluster Amazon EMR, YARN è configurato per consentire ai processi di scrivere i dati della cache in /mnt/yarn/usercache. Quando elabori una grande quantità di dati o esegui più processi simultaneamente, il file system /mnt può riempirsi. Ciò causa errori del gestore dei nodi su alcuni nodi, provocando il blocco o il fallimento del processo.
Utilizza uno dei seguenti metodi per risolvere questo problema:
- In assenza di processi di lunga durata o in streaming, modifica le impostazioni di conservazione della cache utente per YARN NodeManager.
- Se sono presenti processi di lunga durata o in streaming, aumenta i volumi di Amazon Elastic Block Store (Amazon EBS).
Risoluzione
Regola le impostazioni di conservazione della cache dell'utente per NodeManager
I seguenti attributi definiscono le impostazioni di pulizia della cache:
- yarn.nodemanager.localizer.cache.cleanup.interval-ms: si tratta dell'intervallo di pulizia della cache. Il valore predefinito è 600.000 millisecondi. Dopo questo intervallo, quando la dimensione della cache supera il valore impostato in yarn.nodemanager.localizer.cache.target-size-mb, i file non utilizzati dai container in esecuzione vengono eliminati.
- yarn.nodemanager.localizer.cache.target-size-mb: si tratta dello spazio massimo su disco consentito per la cache. Il valore predefinito è 10.240 MB. Quando la dimensione della cache su disco supera questo valore, i file non utilizzati dai container in esecuzione vengono eliminati nell'intervallo impostato in yarn.nodemanager.localizer.cache.cleanup.interval-ms.
Per impostare l'intervallo di pulizia e la dimensione massima dello spazio su disco nel cluster, completa i passaggi seguenti:
-
Apri /etc/hadoop/conf/yarn-site.xml su ogni nodo principale e nodo attività.
-
Riduci i valori per yarn.nodemanager.localizer.cache.cleanup.interval e yarn.nodemanager.localizer.cache.target-size-mb per ogni nodo principale e nodo attività.
Ad esempio:
sudo vim /etc/hadoop/conf/yarn-site.xmlyarn.nodemanager.localizer.cache.cleanup.interval-ms 400000 yarn.nodemanager.localizer.cache.target-size-mb 5120
-
Esegui i seguenti comandi su ogni nodo principale e nodo attività per riavviare NodeManager:
EMR 5.29 e versioni precedentisudo stop hadoop-yarn-nodemanager sudo start hadoop-yarn-nodemanager
EMR 5.30.0 e versioni successive
sudo stop hadoop-yarn-nodemanager.service sudo systemctl start hadoop-yarn-nodemanager.service
-
Per impostare l'intervallo di pulizia e lo spazio massimo su disco in un nuovo cluster, aggiungi un oggetto di configurazione simile al seguente quando avvii il cluster:
[ { "Classification": "yarn-site", "Properties": { "yarn.nodemanager.localizer.cache.cleanup.interval-ms": "400000", "yarn.nodemanager.localizer.cache.target-size-mb": "5120" } } ]
Il servizio di eliminazione non viene completato sui container in esecuzione. Ciò significa che anche dopo che avrai modificato le impostazioni di conservazione della cache dell'utente, i dati potrebbero continuare a finire nel seguente percorso riempiendo il file system:
{'yarn.nodemanager.local-dirs'}/usercache/user/appcache/application_id ,
Aumenta i volumi EBS nei nodi del cluster EMR
Per aumentare l'archiviazione su un cluster EMR in esecuzione, consulta Aumento dinamico dell'archiviazione sui cluster Amazon EMR.
Per aumentare l'archiviazione su un nuovo cluster EMR, specifica una dimensione del volume maggiore quando crei il cluster EMR. Puoi farlo anche quando aggiungi nodi a un cluster esistente:
- Amazon EMR versioni 5.22.0 e successive: la quantità predefinita di archiviazione EBS aumenta in base alle dimensioni dell'istanza Amazon Elastic Compute Cloud (Amazon EC2). Per ulteriori informazioni sulla quantità predefinita di spazio di archiviazione e sul numero di volumi per ogni tipo di istanza, consulta Default Amazon EBS storage for instances.
- Amazon EMR versioni 5.21 e successive: la dimensione predefinita del volume EBS è 32 GB. 27 GB sono riservati per la partizione ** /mnt. ** HDFS, YARN, la cache dell'utente e tutte le applicazioni utilizzano la partizione /mnt. Aumenta le dimensioni del volume EBS secondo necessità. È inoltre possibile specificare più volumi EBS montati come /mnt1 o /mnt2.
Per i processi in streaming Spark, puoi anche eseguire il metodo RDD.unpersist() dopo che non hai più bisogno dei dati. In alternativa, puoi semplicemente chiamare System.gc() in Scala o sc._jvm.System.gc() in Python per avviare la rimozione di oggetti inutili (garbage collection) JVM e rimuovere i file shuffle intermedi.
Contenuto pertinente
- AWS UFFICIALEAggiornata 3 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 3 anni fa