Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Come posso risolvere il problema "Codice di errore: 503 Slow Down" sui lavori s3-dist-cp in Amazon EMR?
Il mio job S3DistCp (s3-dist-cp) su Amazon EMR non funziona a causa della limitazione di velocità di Amazon Simple Storage Service (Amazon S3). Ricevo un messaggio di errore simile al seguente: MapReduce.job: Id attività : attempt_xxxxxx_0012_r_000203_0, stato : Errore NON RIUSCITO: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Rallentamento (servizio: Amazon S3; codice di stato: 503; Codice di errore: 503 Slow Down; ID richiesta: D27E827C847A8304; ID richiesta estesa S3: XWxtDsEZ40GLEoRnSIV6+HYNP2nZiG4MQddtNDR6GMRzlBmOZQ/LXlO5zojLQiy3r9aimZEvXzo=), ID richiesta estesa S3: XWxtDsEZ40GLEoRnSIV6+HYNP2nZiG4MQddtNDR6GMRzlBmOZQ/LXlO5zojLQiy3r9aimZEvXzo= at com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1712)
Breve descrizione
Gli errori "Slow Down" si verificano quando superi la velocità di richiesta di Amazon S3 (3.500 richieste PUT/COPY/POST/DELETE e 5.500 GET/HEAD al secondo per prefisso in un bucket). Questo accade spesso quando i dati utilizzano partizioni in stile Apache Hive. Ad esempio, i seguenti percorsi Amazon S3 utilizzano lo stesso prefisso (/year=2019/). Ciò significa che il limite di richieste è di 3.500 richieste di scrittura o 5.500 richieste di lettura al secondo.
- s3://awsexamplebucket/year=2019/month=11/day=01/mydata.parquet
- s3://awsexamplebucket/year=2019/month=11/day=02/mydata.parquet
- s3://awsexamplebucket/year=2019/month=11/day=03/mydata.parquet
Se non è possibile aumentare il numero di partizioni, riduci il numero di attività di riduzione o aumenta il limite di tentativi di EMR File System (EMRFS) per risolvere gli errori di limitazione di Amazon S3.
Risoluzione
Usa una delle seguenti opzioni per risolvere gli errori di limitazione sui job s3-dist-cp.
Ridurre il numero di riduzioni
Il parametro mapreduce.job.reduces imposta il numero di riduzioni per il lavoro. Amazon EMR imposta automaticamente mapreduce.job.reduces in base al numero di nodi nel cluster e alle risorse di memoria del cluster. Esegui il comando seguente per confermare il numero predefinito di riduzioni per i lavori nel tuo cluster:
$ hdfs getconf -confKey mapreduce.job.reduces
Per impostare un nuovo valore per mapreduce.job.reduces, esegui un comando simile al seguente. Questo comando imposta il numero di riduzioni a 10.
$ s3-dist-cp -Dmapreduce.job.reduces=10 --src s3://awsexamplebucket/data/ --dest s3://awsexamplebucket2/output/
Aumenta il limite di tentativi EMRFS
Per impostazione predefinita, il limite di tentativi EMRFS è impostato su 4. Esegui il comando seguente per confermare il limite di tentativi per il tuo cluster:
$ hdfs getconf -confKey fs.s3.maxRetries
Per aumentare il limite di tentativi per un singolo job s3-dist-cp, esegui un comando simile al seguente. Questo comando imposta il limite di tentativi a 20.
$ s3-dist-cp -Dfs.s3.maxRetries=20 --src s3://awsexamplebucket/data/ --dest s3://awsexamplebucket2/output/
Per aumentare il limite di tentativi su un cluster nuovo o in esecuzione:
- Nuovo cluster: Aggiungi un oggetto di configurazione simile al seguente quando avvii un cluster.
- Cluster in esecuzione: Utilizza il seguente oggetto di configurazione per sovrascrivere la configurazione del cluster per il gruppo di istanze (Amazon EMR versione 5.21.0 e successive).
[ { "Classification": "emrfs-site", "Properties": { "fs.s3.maxRetries": "20" } } ]
Quando aumenti il limite di tentativi per il cluster, anche le applicazioni Spark e Hive possono utilizzare il nuovo limite. Ecco un esempio di sessione di una shell Spark che utilizza il limite di tentativi più alto:
spark> sc.hadoopConfiguration.set("fs.s3.maxRetries", "20") spark> val source_df = spark.read.csv("s3://awsexamplebucket/data/") spark> source_df.write.save("s3://awsexamplebucket2/output/")
Informazioni correlate
Modelli di progettazione basati sulle best practice: ottimizzazione delle prestazioni di Amazon S3

Contenuto pertinente
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata un anno fa