​Por que meu cluster do EMR foi encerrado?

6 minuto de leitura
0

Meu cluster do Amazon EMR foi encerrado inesperadamente.

Resolução

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

Os logs dos clusters 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://exemplo-local-log/node/exemplo-ID-cluster/exemplo-ID-instância-EC2/.

Observação: substitua exemplo-local-log, exemplo-ID-cluster e exemplo-instância-EC2 pela nomenclatura do seu sistema.

Esta é uma lista de tipos de erro 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 erros de encerramento anteriores são os mais comuns. Os clusters do EMR podem ser encerrados devido a erros diferentes dos listados. Para obter mais informações, consulte Erros de recursos.

SHUTDOWN_STEP_FAILED (USER_ERROR) (ENCERRAMENTO_ETAPA_FALHOU [ERRO_USUÁRIO])

Quando você envia uma tarefa de etapa no cluster do EMR, pode especificar o comportamento de falha da etapa no parâmetro ActionOnFailure (AçãoEmFalha). O cluster do EMR será encerrado se você selecionar TERMINATE_CLUSTER (ENCERRAR_CLUSTER) ou TERMINATE_JOB_FLOW (ENCERRAR_FLUXO_TRABALHO) para o parâmetro ActionOnFailure (AçãoEmFalha). Para obter mais informações, consulte StepConfig (ConfigEtapa).

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

CONTINUE (CONTINUAR) ou CANCEL_AND_WAIT (CANCELAR_E_AGUARDAR) no parâmetro ActionOnFailure (AçãoEmFalha)

NO_SLAVES_LEFT (SYSTEM_ERROR) (NENHUM_SLAVE_RESTANTE) [ERRO_SISTEMA])

Esse erro ocorre quando:

  • A proteção contra encerramento é 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 site do Yarn. O limite máximo de utilização padrão é 90%.
  • A instância CENTRAL é uma instância spot e a instância spot é TERMINATED_BY_SPOT_DUE_TO_NO_CAPACITY (TERMINADA_POR_SPOT_DEVIDO_A_FALTA_CAPACIDADE).

Para obter informações sobre encerramento de instância spot, consulte Por que o Amazon EC2 encerrou minha instância spot?

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

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

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:

502 Bad Gateway (502 Gateway ruim)

O erro 502 Bad Gateway (502 Gateway ruim) ocorre quando os sistemas internos do Amazon EMR não conseguem alcançar o nó primário durante um período de tempo. O Amazon EMR será encerrado se a proteção contra encerramento estiver desativada. Verifique os logs do controlador de instâncias e os logs de estado da instância mais recentes quando o serviço controlador de instâncias estiver inativo. A saída padrão do controlador de instâncias mostra que o serviço foi encerrado porque não havia 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 do EMR com um tipo de instância maior para utilizar mais memória para atender aos requisitos do seu cluster. Além disso, limpe o espaço em disco para evitar falta de memória em clusters de longa execução. Para obter mais informações, consulte Como soluciono uma falha do nó primário com o erro “502 Bad Gateway” (502 gateway ruim) ou “504 Gateway Time-out” (504 tempo limite do gateway esgotado) no Amazon EMR?

KMS_ISSUE (USER_ERROR) (PROBLEMA_KMS [ERRO-USUÁRIO])

Quando você usa uma configuração de segurança do Amazon EMR para criptografar um dispositivo raiz e os volumes de armazenamento do Amazon EBS, o perfil deve ter as permissões adequadas. Se as permissões necessárias estiverem faltando, você receberá o erro KMS_ISSUE (PROBLEMA_KMS).

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 do EMR é interrompido por qualquer motivo, o cluster termina com o erro The master node was terminated by user (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 a interrupção dos nós primários ou de todos os nós centrais do EMR leva ao encerramento do cluster, evite parar ou reinicializar os nós do cluster.


AWS OFICIAL
AWS OFICIALAtualizada há 2 meses