¿Cómo soluciono el problema de «Código de error: 503 Ralentización» en los trabajos de s3-dist-cp de Amazon EMR?

3 minutos de lectura
0

Mi trabajo de S3DistCp (s3-dist-cp) en Amazon EMR falla debido a la regulación de Amazon Simple Storage Service ( Amazon S3). Aparece un mensaje de error similar al siguiente: mapreduce.Job: ID de tarea: attempt_xxxxxx_0012_r_000203_0, estado: Error DE FALLO: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Ralentización (Servicio: Amazon S3; Código de estado: 503; Código de error: 503 Ralentización; ID de solicitud: D27E827C847A8304; ID de solicitud extendida de S3: XWxtDsEZ40GLEoRnSIV6+HYNP2nZiG4MQddtNDR6GMRzlBmOZQ/LXlO5zojLQiy3r9aimZEvXzo=), ID de solicitud extendida de S3: XWxtDsEZ40GLEoRnSIV6+HYNP2nZiG4MQddtNDR6GMRzlBmOZQ/LXlO5zojLQiy3r9aimZEvXzo= at com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1712)

Descripción breve

Los errores de «Ralentización» se producen cuando se supera la tasa de solicitudes de Amazon S3 (3500 solicitudes PUT/COPY/POST/DELETE y 5500 solicitudes GET/HEAD por segundo por prefijo en un bucket). Esto suele ocurrir cuando sus datos utilizan particiones tipo Apache Hive. Por ejemplo, las siguientes rutas de Amazon S3 utilizan el mismo prefijo (/year=2019/). Esto significa que el límite de solicitudes es de 3500 solicitudes de escritura o de 5500 solicitudes de lectura por segundo.

  • 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

Si aumentar el número de particiones no es una opción, reduzca el número de tareas del reductor o aumente el límite de reintentos del Sistema de archivos de EMR (EMRFS) para resolver los errores de limitación de Amazon S3.

Resolución

Utilice una de las siguientes opciones para resolver los errores de regulaciones en los trabajos de s3-dist-cp.

Disminuir el número de reducciones

El parámetro mapreduce.job.reduces establece el número de reducciones del trabajo. Amazon EMR configura automáticamente mapreduce.job.reduces en función del número de nodos del clúster y de los recursos de memoria del clúster. Ejecute el siguiente comando para confirmar el número predeterminado de reducciones por trabajos de su clúster:

$ hdfs getconf -confKey mapreduce.job.reduces

Para establecer un nuevo valor para mapreduce.job.reduces, ejecute un comando similar al siguiente. Este comando establece el número de reducciones en 10.

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

Aumentar el límite de reintentos del EMRFS

De forma predeterminada, el límite de reintentos del EMRFS está establecido en 4. Ejecute el siguiente comando para confirmar el límite de reintentos de su clúster:

$ hdfs getconf -confKey fs.s3.maxRetries

Para aumentar el límite de reintentos para un solo trabajo de s3-dist-cp, ejecute un comando similar al siguiente. Este comando establece el límite de reintentos en 20.

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

Para aumentar el límite de reintentos en un clúster nuevo o en ejecución:

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

Al aumentar el límite de reintentos del clúster, las aplicaciones Spark y Hive también pueden usar el nuevo límite. Este es un ejemplo de una sesión de Spark shell que usa el límite de reintentos más 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/")

Información relacionada

Prácticas recomendadas para patrones de diseño: optimizar el rendimiento de Amazon S3

¿Por qué mi trabajo de Spark o Hive en Amazon EMR falla con una AmazonS3Exception HTTP 503 de «Ralentización»?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años