Tentar novamente solicitações do Amazon S3 com EMRFS - Amazon EMR

Tentar novamente solicitações do Amazon S3 com EMRFS

Este tópico fornece informações sobre as estratégias de novas tentativas que você pode usar ao fazer solicitações ao Amazon S3 com o EMRFS. Quando a taxa de solicitação aumenta, o S3 tenta escalar para suportar a nova taxa. Durante esse processo, o S3 pode controlar a utilização das solicitações e retornar um erro 503 Slow Down. Para melhorar a taxa de sucesso das solicitações do S3, você pode ajustar sua estratégia de novas tentativas configurando propriedades na sua configuração emrfs-site.

Você pode ajustar sua estratégia de novas tentativas das maneiras a seguir.

  • Aumente o limite máximo de novas tentativas para a estratégia padrão de novas tentativas de recuo exponencial.

  • Habilite e configure a estratégia de novas tentativas de additive-increase/multiplicative-decrease (AIMD - aumento aditivo/diminuição multiplicativa). O AIMD é compatível com versões 6.4.0 e posteriores do Amazon EMR.

Usar a estratégia padrão de recuo exponencial

Por padrão, o EMRFS usa uma estratégia de recuo exponencial para tentar novamente solicitações do Amazon S3. O limite padrão de novas tentativas do EMRFS é 15. Para evitar um erro 503 Slow Down do S3, você pode aumentar o limite de novas tentativas ao criar um novo cluster, em um cluster em execução ou no runtime da aplicação.

Para aumentar o limite de novas tentativas, você deve alterar o valor de fs.s3.maxRetries na sua configuração emrfs-site. O exemplo de configuração a seguir define fs.s3.maxRetries como um valor personalizado de 30.

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

Para obter mais informações sobre como trabalhar com objetos de configuração, consulte Configurar aplicações.

Usar a estratégia de novas tentativas do AIMD

Com as versões 6.4.0 e posteriores do Amazon EMR, o EMRFS é compatível com uma estratégia alternativa de novas tentativas baseada em um modelo de aumento aditivo/diminuição multiplicativa (AIMD). A estratégia de novas tentativa do AIMD é especialmente útil quando você trabalha com grandes clusters do Amazon EMR.

O AIMD calcula uma taxa de solicitação personalizada usando dados sobre solicitações recentes bem-sucedidas. Essa estratégia diminui o número de solicitações submetidas a controle de utilização e o total de tentativas necessárias por solicitação.

Para habilitar a estratégia de novas tentativas do AIMD, você deve definir a propriedade fs.s3.aimd.enabled como true em sua configuração emrfs-site, como no exemplo a seguir.

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

Para obter mais informações sobre como trabalhar com objetos de configuração, consulte Configurar aplicações.

Configurações avançadas de novas tentativas do AIMD

Você pode configurar as propriedades listadas na tabela a seguir para refinar o comportamento de novas tentativas quando usar a estratégia de novas tentativas do AIMD. Para a maioria dos casos de uso, recomendamos que você use os valores padrão.

Propriedades avançadas da estratégia de novas tentativas do AIMD
Propriedade Valor padrão Descrição
fs.s3.aimd.increaseIncrement 0.1 Controla a rapidez com que a taxa de solicitações aumenta quando solicitações consecutivas são bem-sucedidas.
fs.s3.aimd.reductionFactor 2 Controla a rapidez com que a taxa de solicitação diminui quando o Amazon S3 retorna uma resposta 503. O fator padrão de 2 reduz a taxa de solicitação pela metade.
fs.s3.aimd.minRate 0.1 Define o limite inferior da taxa de solicitações quando as solicitações sofrem controle de utilização sustentado pelo S3.
fs.s3.aimd.initialRate 5500 Define a taxa de solicitação inicial, que sofre alterações de acordo com os valores que você especifica para fs.s3.aimd.increaseIncrement e fs.s3.aimd.reductionFactor.

A taxa inicial também é usada para solicitações GET e é escalada proporcionalmente (3500/5500) para solicitações PUT.

fs.s3.aimd.adjustWindow 2 Controla a frequência com que a taxa de solicitação é ajustada, medida em número de respostas.
fs.s3.aimd.maxAttempts 100 Define o número máximo de tentativas para testar uma solicitação.