Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
¿Por qué mi trabajo de Spark o Hive en Amazon EMR devuelve un error con una «Ralentización» HTTP 503 de AmazonS3Exception?
Mi trabajo de Spark o Hive en Amazon EMR devuelve un error con una «Ralentización» HTTP 503 de AmazonS3Exception.
Descripción corta
Cuando la tasa de solicitudes de Amazon Simple Storage Service (Amazon S3) de tu aplicación supera las tasas habituales sostenidas y Amazon S3 optimiza internamente el rendimiento, verás el siguiente error:
«java.io.IOException: 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; Request ID: 2E8B8866BFF00645; S3 Extended Request ID: oGSeRdT4xSKtyZAcUe53LgUf1+I18dNXpL2+qZhFWhuciNOYpxX81bpFiTw2gum43GcOHR+UlJE=), S3 Extended Request ID: oGSeRdT4xSKtyZAcUe53LgUf1+I18dNXpL2+qZhFWhuciNOYpxX81bpFiTw2gum43GcOHR+UlJE=»
Resolución
Configuración de las métricas de las solicitud de CloudWatch
Para poder identificar el problema debido al exceso de solicitudes, se recomienda configurar las métricas de solicitud de Amazon CloudWatch para el bucket de Amazon S3.
Activa las métricas de solicitud de CloudWatch para el bucket y define un filtro para el prefijo.
Modificación de la estrategia de reintentos para las solicitudes de Amazon S3
De forma predeterminada, el sistema de archivos EMR (EMRFS) utiliza una estrategia de retroceso exponencial para reintentar las solicitudes a Amazon S3. El límite predeterminado de reintentos de EMRFS es 15. Sin embargo, puedes aumentar el límite de reintentos en un clúster nuevo, en un clúster en ejecución o en tiempo de ejecución de la aplicación.
Para aumentar el límite de reintentos, cambia el valor del parámetro fs.s3.maxRetries.
Nota: Si estableces un valor muy alto para este parámetro, es posible que la duración del trabajo sea mayor.
Establece el parámetro en un valor alto (por ejemplo, 20) y supervisa la duración de la sobrecarga de los trabajos. A continuación, ajusta el parámetro en función de tu caso de uso.
Para un clúster nuevo, puedes añadir un objeto de configuración similar al siguiente al lanzar el clúster:
[ { "Classification": "emrfs-site", "Properties": { "fs.s3.maxRetries": "20" } } ]
Tras lanzar el clúster, las aplicaciones de Spark y Hive que se ejecutan en Amazon EMR utilizan el nuevo límite.
Para aumentar el límite de reintentos en un clúster en ejecución, sigue estos pasos:
- Abre la consola de Amazon EMR.
- Elije el clúster activo que quieres volver a configurar.
- Selecciona la pestaña Configuraciones.
- En la lista desplegable Filtrar, selecciona el grupo de instancias que quieras reconfigurar.
- En la lista desplegable Reconfigurar, selecciona Editar en la tabla.
- En la tabla de clasificación de configuración, selecciona Agregar configuración, y luego, usa los siguientes valores:
En Clasificación, usa emrfs-site
En Propiedad, usa fs.s3.maxRetries
En Valor, usa el nuevo valor para el límite de reintentos. Por ejemplo, 20. - Selecciona Aplicar esta configuración a todos los grupos de instancias activos.
- Selecciona Guardar cambios.
Una vez implementada la configuración, las aplicaciones Spark y Hive utilizan el nuevo límite.
Para aumentar el límite de reintentos en la versión ejecutable de una aplicación Spark, usa una sesión de shell de Spark para modificar el parámetro fs.s3.maxRetries de forma similar al siguiente ejemplo:
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/")
Para aumentar el límite de reintentos en tiempo de ejecución de una aplicación Hive, ejecuta un comando similar al del siguiente ejemplo:
hive> set fs.s3.maxRetries=20; hive> select ....
Ajuste del número de solicitudes de Amazon S3 simultáneas
- Si tienes varios trabajos (Spark, Apache Hive o s-dist-cp) que leen y escriben en el mismo prefijo de Amazon S3, puedes ajustar la concurrencia. Comienza con los trabajos más pesados de lectura o escritura y reduce su concurrencia para evitar un paralelismo excesivo.
Nota: Si configuraste el acceso entre cuentas para Amazon S3, es posible que otras cuentas de AWS también envíen trabajos con el mismo prefijo. - Si observas errores cuando el trabajo intenta escribir en el bucket de destino, reduce el paralelismo de escritura excesivo. Por ejemplo, usa las operaciones .coalesce() o .repartition() de Spark para reducir el número de particiones de salida de Spark antes de escribir en Amazon S3. También puedes reducir la cantidad de núcleos por ejecutor o reducir la cantidad de ejecutores.
- Si observas errores cuando el trabajo intenta leer desde el bucket de origen, ajusta el tamaño de los objetos. Para reducir la cantidad de objetos que lee el trabajo, agrega objetos más pequeños a objetos más grandes. Por ejemplo, utiliza s3-dist-cp para combinar una gran cantidad de archivos pequeños en una cantidad menor de archivos grandes.
Información relacionada
Prácticas recomendadas para patrones de diseño: optimizar el rendimiento de Amazon S3
¿Por qué mi aplicación de Amazon EMR falla con AmazonS3Exception HTTP 403 «Acceso denegado»?
¿Por qué mi aplicación de Amazon EMR falla con AmazonS3Exception HTTP 404 «No encontrado»?
- Temas
- Analytics
- Etiquetas
- Amazon EMR
- Idioma
- Español
Vídeos relacionados


Contenido relevante
- preguntada hace 10 meses
- preguntada hace 7 meses
- preguntada hace 3 meses
- preguntada hace un año
OFICIAL DE AWSActualizada hace 3 años