Wie behebe ich den Fehler „Fehlercode: 503 Slow Down" bei s3-dist-cp-Jobs in Amazon EMR?

Lesedauer: 3 Minute
0

Mein S3DistCp-Auftrag (s3-dist-cp) im Amazon EMR-Auftrag schlägt aufgrund der Drosselung durch den Amazon Simple Storage Service (Amazon S3) fehl. Ich erhalte eine Fehlermeldung ähnlich der folgenden: mapreduce.Job: Task-ID: attempt_xxxxxx_0012_r_000203_0, Status : FEHLGESCHLAGEN Fehler: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Slow Down (Service: Amazon S3; Statuscode: 503; Fehlercode: 503 Slow Down; Anforderungs-ID: D27E827C847A8304; Erweiterte S3-Anforderungs-ID: XWxtDsEZ40GLEoRnSIV6+HYNP2nZiG4MQddtNDR6GMRzlBmOZQ/LXlO5zojLQiy3r9aimZEvXzo=), Erweiterte S3-Anforderungs-ID: XWxtDsEZ40GLEoRnSIV6+HYNP2nZiG4MQddtNDR6GMRzlBmOZQ/LXlO5zojLQiy3r9aimZEvXzo= at com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1712)

Kurzbeschreibung

„Slow Down“ -Fehler treten auf, wenn Sie die Amazon S3-Anforderungsrate überschreiten (3.500 PUT/COPY/POST/DELETE- und 5.500 GET/HEAD-Anfragen pro Sekunde pro Präfix in einem Bucket). Dies passiert häufig, wenn Ihre Daten Partitionen im Apache Hive-Stil verwenden. Die folgenden Amazon S3-Pfade verwenden beispielsweise dasselbe Präfix (/year=2019/). Dies bedeutet, dass das Anforderungslimit bei 3.500 Schreibanforderungen oder 5.500 Leseanforderungen pro Sekunde liegt.

  • 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

Wenn eine Erhöhung der Anzahl der Partitionen keine Option ist, reduzieren Sie die Anzahl der Reducer-Aufgaben oder erhöhen Sie das Wiederholungslimit für das EMR-Dateisystem (EMRFS), um Amazon S3-Drosselungsfehler zu beheben.

Lösung

Verwenden Sie eine der folgenden Optionen, um Drosselungsfehler bei s3-dist-cp-Aufträgen zu beheben.

Reduzieren Sie die Anzahl der Reduzierungen

Der Parameter mapreduce.job.reduces legt die Anzahl der Reduzierungen für die Aufgabe fest. Amazon EMR legt mapreduce.job.reduces automatisch auf Grundlage der Anzahl von Knoten im Cluster und der Speicherressourcen des Clusters fest. Führen Sie anschließend folgenden Befehl aus, um die Standardanzahl der Reduzierungen für Jobs in Ihrem Cluster zu überprüfen:

$ hdfs getconf -confKey mapreduce.job.reduces

Führen Sie einen Befehl ähnlich dem folgenden aus, um einen neuen Wert für mapreduce.job.reduces festzulegen. Mit diesem Befehl wird die Anzahl der Reduzierungen auf 10 festgelegt.

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

Erhöhen Sie das EMRFS-Wiederholungslimit

Standardmäßig ist das EMRFS-Wiederholungslimit auf 4 festgelegt. Führen Sie den folgenden Befehl aus, um das Wiederholungslimit für Ihren Cluster zu bestätigen:

$ hdfs getconf -confKey fs.s3.maxRetries

Um das Wiederholungslimit für einen einzelnen s3-dist-cp-Job zu erhöhen, führen Sie einen Befehl ähnlich dem folgenden aus. Mit diesem Befehl wird das Wiederholungslimit auf 20 festgelegt.

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

Um das Wiederholungslimit für einen neuen oder laufenden Cluster zu erhöhen, gehen Sie wie folgt vor:

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

Wenn Sie das Wiederholungslimit für den Cluster erhöhen, können Spark- und Hive-Anwendungen das neue Limit ebenfalls verwenden. Hier sehen Sie ein Beispiel für eine Spark-Shell-Sitzung, die das höhere Wiederholungslimit verwendet:

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

Warum schlägt mein Spark- oder Hive-Job auf Amazon EMR mit einer HTTP 503 „Verlangsamen“ AmazonS3Exception fehl?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren