Reintento de solicitudes de Amazon S3 con EMRFS - Amazon EMR

Reintento de solicitudes de Amazon S3 con EMRFS

En este tema se proporciona información sobre las estrategias de reintentos que puede utilizar al realizar solicitudes a Amazon S3 con EMRFS. Cuando la tasa de solicitudes aumenta, S3 intenta escalar para dar cabida a la nueva tasa. Durante este proceso, S3 puede limitar las solicitudes y devolver un error 503 Slow Down. Para mejorar la tasa de éxito de las solicitudes de S3, puede configurar las propiedades de la configuración emrfs-site para ajustar la estrategia de reintentos.

Puede ajustar la estrategia de reintentos de las siguientes maneras.

  • Aumente el límite máximo de reintentos para la estrategia de reintentos de retroceso exponencial predeterminada.

  • Habilite y configure la estrategia de reintentos de aumento aditivo/disminución multiplicativa (AIMD). AIMD es compatible con la versión 6.4.0 y posteriores de Amazon EMR.

Uso de la estrategia de retroceso exponencial predeterminada

De forma predeterminada, EMRFS utiliza una estrategia de retroceso exponencial para reintentar las solicitudes de Amazon S3. El límite de reintentos de EMRFS predeterminado es de 15. Para evitar un error 503 Slow Down de S3, puede aumentar el límite de reintentos al crear un clúster nuevo, en un clúster en ejecución o durante el tiempo de ejecución de la aplicación.

Para aumentar el límite de reintentos, debe cambiar el valor de fs.s3.maxRetries de la configuración emrfs-site. En el siguiente ejemplo de configuración se establece fs.s3.maxRetries en un valor personalizado de 30.

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

Para obtener información acerca del uso de objetos de configuración, consulte Configuración de aplicaciones.

Uso de la estrategia de reintentos de AIMD

Con la versión 6.4.0 y posteriores de Amazon EMR, EMRFS admite una estrategia de reintentos alternativa basada en un modelo de aumento aditivo/disminución multiplicativa (AIMD). La estrategia de reintentos de AIMD resulta especialmente útil cuando se trabaja con clústeres grandes de Amazon EMR.

AIMD calcula una tasa de solicitudes personalizada a partir de los datos sobre las solicitudes recientes que se han realizado correctamente. Esta estrategia reduce el número de solicitudes limitadas y el total de intentos necesarios por solicitud.

Para habilitar la estrategia de reintentos de AIMD, debe establecer la propiedad fs.s3.aimd.enabled en true en la configuración emrfs-site, como en el siguiente ejemplo.

[ { "Classification": "emrfs-site", "Properties": { "fs.s3.aimd.enabled": "true" } } ]

Para obtener información acerca del uso de objetos de configuración, consulte Configuración de aplicaciones.

Configuración avanzada de reintentos de AIMD

Puede configurar las propiedades que se muestran en la siguiente tabla para refinar el comportamiento de los reintentos al utilizar la estrategia de reintentos de AIMD. Para la mayoría de los casos de uso, le recomendamos que utilice los valores predeterminados.

Propiedades avanzadas de la estrategia de reintentos de AIMD
Propiedad Valor predeterminado Descripción
fs.s3.aimd.increaseIncrement 0.1 Controla la rapidez con la que aumenta la tasa de solicitudes cuando las solicitudes consecutivas se realizan correctamente.
fs.s3.aimd.reductionFactor 2 Controla la rapidez con la que disminuye la tasa de solicitudes cuando Amazon S3 devuelve una respuesta 503. El factor predeterminado de 2 reduce la tasa de solicitudes a la mitad.
fs.s3.aimd.minRate 0.1 Establece el límite inferior de la tasa de solicitudes cuando las solicitudes sufren una limitación constante por parte de S3.
fs.s3.aimd.initialRate 5500 Establece la tasa de solicitudes inicial, que luego cambia según los valores que especifique para fs.s3.aimd.increaseIncrement y fs.s3.aimd.reductionFactor.

La tasa inicial también se usa para las solicitudes GET y se escala de forma proporcional (3500/5500) para las solicitudes PUT.

fs.s3.aimd.adjustWindow 2 Controla la frecuencia con la que se ajusta la tasa de solicitudes, medida en número de respuestas.
fs.s3.aimd.maxAttempts 100 Establece el número máximo de intentos para intentar una solicitud.