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.
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. |