Salta al contenuto

Come posso risolvere l'errore "Error Code: 503 Slow Down" dei processi S3DistCp in Amazon EMR?

3 minuti di lettura
0

Desidero risolvere l'errore "Error Code: 503 Slow Down" che provoca l'esito negativo dei miei processi S3DistCP in Amazon EMR.

Risoluzione

Quando i dati utilizzano partizioni in stile Apache Hive e superi la quantità di richieste di Amazon Simple Storage Service (Amazon S3) consentite, ricevi il seguente errore:

"mapreduce.Job: Task Id : attempt_######_0012_r_000203_0, Status : FAILED Error: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Rallentamento (servizio: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; ID richiesta: D27E827C847A8304; ID richiesta estesa S3: XWxtDsEZ40GLEoRnSIV6+HYNP2nZiG4MQddtNDR6GMRzlBmOZQ/LXlO5zojLQiy3r9aimZEvXzo=), S3 Extended Request ID: XWxtDsEZ40GLEoRnSIV6+HYNP2nZiG4MQddtNDR6GMRzlBmOZQ/LXlO5zojLQiy3r9aimZEvXzo= at com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1712)"

Ad esempio, i seguenti percorsi Amazon S3 utilizzano lo stesso prefisso /year=2019/:

  • 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

La quota di richieste è di 3.500 richieste di scrittura o 5.500 richieste di lettura al secondo. Tutte le operazioni all'interno di un prefisso vengono conteggiate ai fini delle quote.

Se non puoi incrementare il numero di partizioni, utilizza una delle seguenti opzioni per risolvere gli errori di limitazione dei processi S3DistCp.

Decrementa il numero di attività di riduzione

Il parametro mapreduce.job.reduces imposta il numero di attività di riduzione per il processo. Amazon EMR imposta automaticamente mapreduce.job.reduces in base al numero di nodi nel cluster e alle risorse di memoria del cluster.

Esegui questo comando per verificare il numero predefinito di attività di riduzione per i processi nel cluster:

hdfs getconf -confKey mapreduce.job.reduces

Per impostare un nuovo valore per mapreduce.job.reduces, esegui questo comando:

s3-dist-cp -Dmapreduce.job.reduces=10 --src s3://awsexamplebucket/data/ --dest s3://awsexamplebucket2/output/

Nota: sostituisci 10 con il numero che desideri impostare per le attività di riduzione. Inoltre, sostituisci i valori dell'esempio con i tuoi valori.

Incrementa la quota di tentativi EMRFS

Per impostazione predefinita, la quota di tentativi EMRFS è impostata su 4.

Esegui questo comando per verificare la quota di tentativi per il cluster:

hdfs getconf -confKey fs.s3.maxRetries

Per incrementare la quota di tentativi per un processo s3-dist-cp, esegui questo comando:

s3-dist-cp -Dfs.s3.maxRetries=20 --src s3://awsexamplebucket/data/ --dest s3://awsexamplebucket2/output/

Nota: sostituisci 20 con la quota che desideri impostare per i tentativi. Inoltre, sostituisci i valori dell'esempio con i tuoi valori.

Per incrementare la quota di tentativi in un nuovo cluster, aggiungi un oggetto di configurazione quando avvii un cluster. Per incrementare la quota di tentativi in un cluster in esecuzione, utilizza l'oggetto di configurazione per sovrascrivere la configurazione del cluster per il gruppo di istanze.

Esempio di configurazione per Amazon EMR versioni 5.21.0 e successive:

[
    {
        "Classification": "emrfs-site",
        "Properties": {
            "fs.s3.maxRetries": "20"
        }
    }
]

Quando incrementi la quota di tentativi per il cluster, anche le applicazioni Apache Spark e Hive possono utilizzare la nuova quota. L'esempio seguente di sessione della shell Spark utilizza la quota di tentativi incrementata:

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

Perché il mio processo Spark o Hive su Amazon EMR fallisce con un HTTP 503 “Slow Down” AmazonS3Exception?

AWS UFFICIALEAggiornata 10 mesi fa