​Por que meu cluster EMR foi encerrado?

6 minuto de leitura
0

Meu cluster do Amazon EMR foi encerrado inesperadamente.

Resolução

Analise os logs de provisionamento do Amazon EMR armazenados no Amazon S3

Os logs de cluster do Amazon EMR são armazenados em um bucket do Amazon Simple Storage Service (Amazon S3) especificado na inicialização do cluster. Os logs são armazenados em s3://example-log-location/example-cluster-ID/node/example-EC2-instance-ID/.

Observação: substitua example-log-location, example-cluster-ID e example-EC2-instance-ID pela nomenclatura do seu sistema.

Veja a seguir uma lista de erros comuns:

SHUTDOWN_STEP_FAILED (USER_ERROR)
NO_SLAVES_LEFT (SYSTEM_ERROR)
The master failed: Error occurred: <html>??<head><title>502 Bad Gateway</title></head>??<body>??<center><h1>502 Bad Gateway</h1></center>??<hr><center>nginx/1.16.1</center>??</body>??</html>??
KMS_ISSUE (USER_ERROR)Terminated with errors, The master node was terminated by user.

Observação: os anteriores são os erros de encerramento mais comuns. Os clusters do EMR podem ser encerrados devido a erros diferentes dos listados. Para mais informações, consulte Resource errors (Erros de recursos).

SHUTDOWN_STEP_FAILED (USER_ERROR)

Ao enviar um trabalho em etapas no cluster do EMR, você pode especificar o comportamento da falha da etapa no parâmetro ActionOnFailure. O cluster do EMR será encerrado se você selecionar TERMINATE_CLUSTER ou TERMINATE_JOB_FLOW para o parâmetro ActionOnFailure. Para mais informações, consulte a StepConfig.

Veja a seguir um exemplo de mensagem de erro do AWS CloudTrail:

{
  "severity": "ERROR",
  "actionOnFailure": "TERMINATE_JOB_FLOW",
  "stepId": "s-2I0GXXXXXXXX",
  "name": "Example Step",
  "clusterId": "j-2YJXXXXXXX",
  "state": "FAILED",
  "message": "Step s-2I0GXXXXXXXX (Example Step) in Amazon EMR cluster j-2YJXXXXXXX failed at 202X-1X-0X 0X:XX UTC."
}

Para evitar esse erro, use a opção CONTINUE ou CANCEL_AND_WAIT no parâmetro ActionOnFailure ao enviar o trabalho de etapa.

NO_SLAVES_LEFT (SYSTEM_ERROR)

Esse erro ocorre quando:

  • A proteção contra encerramento está desativada no cluster do EMR.
  • Todos os nós centrais excedem a capacidade de armazenamento em disco, conforme especificado por um limite máximo de utilização na classificação de configuração do yarn-site. O limite máximo de utilização padrão é 90%.
  • A instância CORE é uma instância spot, e a instância spot é TERMINATED_BY_SPOT_DUE_TO_NO_CAPACITY.

Para informações sobre o encerramento da instância spot, consulte Why did Amazon EC2 interrupt my Spot Instance? (Por que o Amazon EC2 interrompeu minha instância spot?)

Para mais informações sobre o erro NO_SLAVE_LEFT, consulte Cluster encerrado com NO_SLAVE_LEFT e nós centrais FAILED_BY_MASTER.

Veja a seguir um exemplo de mensagem de erro de controlador de instância:

202X-0X-0X 1X:5X:5X,968 INFO Poller: InstanceJointStatusMap contains X entries (DD:5 R:3):
i-0e336xxxxxxxxxxxx 25d21h R  25d21h ig-22 ip-1x-2xx-xx-1xx.local.xxx.com  I:   52s Y:U    98s c: 0 am:    0 H:R  1.1%Yarn unhealthy Reason : 1/4 local-dirs usable space is below configured utilization percentage/no more usable space [ /mnt/yarn : used space above threshold of 90.0% ] ; 1/1 log-dirs usable space is below configured utilization percentage/no more usable space [ /var/log/hadoop-yarn/containers : used space above threshold of 90.0% ]

Para resolver esse erro:

Gateway 502 inválido

O erro Gateway 502 inválido ocorre quando os sistemas internos do Amazon EMR não conseguem alcançar o nó primário por um período de tempo. O Amazon EMR será encerrado se a proteção contra encerramento estiver desativada. Verifique os logs mais recentes do controlador de instância e os logs do estado da instância quando o serviço do controlador de instância estiver inativo. A saída padrão do controlador de instância mostra que o serviço foi encerrado porque não há memória suficiente. Isso indica que o nó primário do cluster está com pouca memória.

Veja a seguir um exemplo de mensagem de erro do log de estado da instância:

# dump instance controller stdout
tail -n 100 /emr/instance-controller/log/instance-controller.out
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007fb46c7c8000, 12288, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 12288 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid16110.log

# whats memory usage look like
free -m
              total        used        free      shared  buff/cache   available
Mem:          15661       15346         147           0         167          69
Swap:             0           0           0

Para evitar o erro anterior, inicie um cluster EMR com um tipo de instância maior para aproveitar mais memória para os requisitos do seu cluster. Além disso, limpe o espaço em disco para evitar interrupções de memória em clusters de longa duração. Para mais informações, consulte How do I troubleshoot primary node failure with error "502 Bad Gateway" or "504 Gateway Time-out" in Amazon EMR? (Como soluciono a falha do nó primário com o erro “Gateway 502 inválido” ou “Tempo limite do gateway 504” no Amazon EMR)

KMS_ISSUE (USER_ERROR)

Ao usar uma configuração de segurança do Amazon EMR para criptografar um dispositivo raiz e volumes de armazenamento do Amazon EBS, a função deve ter as permissões adequadas. Se as permissões necessárias estiverem faltando, você verá o erro KMS_ISSUE.

Veja a seguir um exemplo de mensagem de erro do AWS CloudTrail:

The EMR Service Role must have the kms:GenerateDataKey* and kms:ReEncrypt* permission for the KMS key configuration when you enabled EBS encryption by default. You can retrieve that KMS key's ID by using the ec2:GetEbsDefaultKmsKeyId API.

Para evitar o erro anterior, certifique-se de que as configurações de segurança usadas para criptografar o dispositivo raiz e os volumes de armazenamento do Amazon EBS tenham as permissões necessárias. Para essas configurações, certifique-se de que o perfil de serviço do Amazon EMR (EMR_DefaultRole_V2) tenha permissões para usar a chave especificada do AWS Key Management Service (AWS KMS).

Encerrado com erros, o nó principal foi encerrado pelo usuário

Quando o nó primário do cluster EMR parar por qualquer motivo, o cluster será encerrado com o erro O nó principal foi encerrado pelo usuário.

Veja a seguir um exemplo de mensagem de erro do AWS CloudTrail:

eventTime": "2023-01-18T08:07:02Z",
    "eventSource": "ec2.amazonaws.com",
    "eventName": "StopInstances",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "52.xx.xx.xx",
    "userAgent": "AWS Internal",
    "requestParameters": {
        "instancesSet": {
            "items": [
                {
                    "instanceId": "i-xxf6c5xxxxxxxxxxx"
                }
            ]
        },
        "force": false
},

Como interromper o nó primário ou todos os nós centrais do EMR leva ao encerramento do cluster, evite interromper ou reinicializar os nós do cluster.


AWS OFICIAL
AWS OFICIALAtualizada há um ano