Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
Wie behebe ich den Fehler „Error Code: 503 Slow Down“ bei S3DistCp-Aufträgen in Amazon EMR?
Ich möchte den Fehler „Error Code: 503 Slow Down“ beheben, der dazu führt, dass meine S3DistCp-Aufträge in Amazon EMR fehlschlagen.
Lösung
Wenn deine Daten Partitionen im Apache Hive-Stil verwenden und du die Amazon Simple Storage Service (Amazon S3)-Anforderungsrate überschreitest, erhältst du die folgende Fehlermeldung:
„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: Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; Anforderungs-ID: D27E827C847A8304; Erweiterte S3-Anforderungs-ID: 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)“
Die folgenden Amazon S3-Pfade verwenden beispielsweise dasselbe Präfix, /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
Das Anforderungskontingent beträgt 3500 Schreibanforderungen oder 5500 Leseanforderungen pro Sekunde. Alle Operationen innerhalb eines Präfixes werden auf die Kontingente angerechnet.
Wenn du die Anzahl der Partitionen nicht erhöhen kannst, verwende eine der folgenden Optionen, um Drosselungsfehler bei S3DistCp-Aufträgen zu beheben.
Verringern der Anzahl der Reduzierungsaufgaben
Der Parameter mapreduce.job.reduces legt die Anzahl der Reduzierungsaufgaben fest. Amazon EMR legt mapreduce.job.reduces automatisch auf Grundlage der Anzahl von Knoten im Cluster und der Speicherressourcen des Clusters fest.
Führe anschließend folgenden Befehl aus, um die Standardanzahl der Reduzierungsaufgaben bei Aufträgen im Cluster zu überprüfen:
hdfs getconf -confKey mapreduce.job.reduces
Führe den folgenden Befehl aus, um einen neuen Wert für mapreduce.job.reduces festzulegen:
s3-dist-cp -Dmapreduce.job.reduces=10 --src s3://awsexamplebucket/data/ --dest s3://awsexamplebucket2/output/
Hinweis: Ersetze 10 durch die Zahl, die du für Reduzierungsaufgaben festlegen möchtest. Ersetze außerdem die Beispielwerte durch deine Werte.
Erhöhe das EMRFS-Wiederholungskontingent
Standardmäßig ist das EMRFS-Wiederholungskontingent auf 4 festgelegt.
Führe den folgenden Befehl aus, um das Wiederholungskontingent für den Cluster zu überprüfen:
hdfs getconf -confKey fs.s3.maxRetries
Führe den folgenden Befehl aus, um das Wiederholungskontingent für einen s3-dist-cp-Auftrag zu erhöhen:
s3-dist-cp -Dfs.s3.maxRetries=20 --src s3://awsexamplebucket/data/ --dest s3://awsexamplebucket2/output/
Hinweis: Ersetze 20 durch das Kontingent, das du für Wiederholungsversuche festlegen möchtest. Ersetze außerdem die Beispielwerte durch deine Werte.
Um das Wiederholungskontingent für einen neuen Cluster zu erhöhen, füge beim Starten eines Clusters ein Konfigurationsobjekt hinzu. Um das Wiederholungskontingent für einen Cluster, der ausgeführt wird, zu erhöhen, verwende das Konfigurationsobjekt, um die Cluster-Konfiguration für die Instance-Gruppe zu überschreiben.
Beispiel für ein Konfigurationsobjekt für Amazon EMR-Versionen 5.21.0 und höher:
[ { "Classification": "emrfs-site", "Properties": { "fs.s3.maxRetries": "20" } } ]
Wenn du das Wiederholungskontingent für den Cluster erhöhst, können Apache Spark- und Hive-Anwendungen das neue Kontingent ebenfalls verwenden. Das folgende Beispiel für eine Spark-Shell-Sitzung verwendet das höhere Wiederholungskontingent:
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/")
Ähnliche Informationen
Bewährte Methoden zur Gestaltung von Mustern: Optimierung der Amazon S3-Leistung

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 2 Jahren