Como soluciono o problema “Código de erro: 503 Desacelerar" em trabalhos s3-dist-cp no Amazon EMR?
Meu trabalho S3DistCp (s3-dist-cp) no trabalho do Amazon EMR falha devido ao controle de utilização do Amazon Simple Storage Service (Amazon S3). Recebo uma mensagem de erro semelhante à seguinte: mapreduce.Job: ID da tarefa: attempt_xxxxxx_0012_r_000203_0, Status: FAILED Erro: com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.services.s3.model.AmazonS3Exception: Desacelerar (serviço: Amazon S3; Código de status: 503; Código de erro: 503 Desacelerar; ID da solicitação: D27E827C847A8304; de solicitação estendida do S3: XWxtDsEZ40GLEoRnSIV6+HYNP2nZiG4MQddtNDR6GMRzlBmOZQ/LXlO5zojLQiy3r9aimZEvXzo=), ID da solicitação estendida do S3: XWxtDsEZ40GLEoRnSIV6+HYNP2nZiG4MQddtNDR6GMRzlBmOZQ/LXlO5zojLQiy3r9aimZEvXzo= at com.amazon.ws.emr.hadoop.fs.shaded.com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1712)
Breve descrição
Erros de “desaceleração” ocorrem quando você excede a taxa de solicitação do Amazon S3 (3.500 solicitações PUT/COPY/POST/DELETE e 5.500 solicitações GET/HEAD por segundo por prefixo em um bucket). Isso geralmente acontece quando seus dados usam partições ao estilo Apache Hive. Por exemplo, os seguintes caminhos do Amazon S3 usam o mesmo prefixo (/year=2019/). Isso significa que o limite de solicitações é de 3.500 solicitações de gravação ou 5.500 solicitações de leitura 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
Se aumentar o número de partições não for uma opção, reduza o número de tarefas redutoras ou aumente o limite de novas tentativas do Sistema de arquivos do EMR (EMRFS) para resolver erros de controle de utilização do Amazon S3.
Resolução
Use uma das opções a seguir para resolver erros de controle de utilização em trabalhos s3-dist-cp.
Diminuir o número de reduções
O parâmetro mapreduce.job.reduces define o número de reduções para o trabalho. O Amazon EMR define automaticamente mapreduce.job.reduce com base no número de nós no cluster e nos recursos de memória do cluster. Execute o comando a seguir para confirmar o número padrão de reduções para trabalhos no seu cluster:
$ hdfs getconf -confKey mapreduce.job.reduces
Para definir um novo valor para mapreduce.job.reduce, execute um comando semelhante ao seguinte. Esse comando define o número de reduções como 10.
$ s3-dist-cp -Dmapreduce.job.reduces=10 --src s3://awsexamplebucket/data/ --dest s3://awsexamplebucket2/output/
Aumentar o limite de novas tentativas do EMRFS
Por padrão, o limite de repetição do EMRFS está definido como 4. Execute o comando a seguir para confirmar o limite de novas tentativas para seu cluster:
$ hdfs getconf -confKey fs.s3.maxRetries
Para aumentar o limite de novas tentativas para um único trabalho s3-dist-cp, execute um comando semelhante ao seguinte. Esse comando define o limite de novas tentativas como 20.
$ s3-dist-cp -Dfs.s3.maxRetries=20 --src s3://awsexamplebucket/data/ --dest s3://awsexamplebucket2/output/
Para aumentar o limite de repetições em um cluster novo ou em execução:
- Novo cluster: Adicione um objeto de configuração semelhante ao seguinte ao iniciar um cluster.
- Cluster em execução: Use o objeto de configuração a seguir para substituir a configuração do cluster para o grupo de instâncias (Amazon EMR versões de lançamento 5.21.0 e posteriores).
[ { "Classification": "emrfs-site", "Properties": { "fs.s3.maxRetries": "20" } } ]
Quando você aumenta o limite de repetições para o cluster, as aplicações Spark e Hive também podem usar o novo limite. Aqui está um exemplo de uma sessão de shell Spark que usa o limite maior de repetições:
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/")
Informações relacionadas
Padrões de projeto com práticas recomendadas: otimização da performance do Amazon S3
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 22 dias
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 2 anos