Quiero resolver un clúster de Amazon EMR que no termina o termina antes de lo esperado al utilizar una política de terminación automática.
Descripción breve
Al crear un clúster de Amazon EMR, puedes activar la política de terminación automática. La política de terminación automática termina el clúster después de un periodo específico de tiempo de inactividad.
En las versiones 5.34 a 5.36 y 6.4.0 o posteriores de Amazon EMR, un clúster queda inactivo por los siguientes motivos:
- Las aplicaciones de YARN no están activas.
- El uso de HDFS está por debajo del 10 %.
- Las conexiones del cuaderno de Amazon EMR o EMR Studio no están activas.
- Las interfaces de usuario de las aplicaciones de clúster no están en uso.
En las versiones 5.30.0 a 5.33.1 y 6.1.0 a 6.3.0 o posteriores de Amazon EMR, un clúster queda inactivo por los siguientes motivos:
- Las aplicaciones de YARN no están activas.
- El uso de HDFS está por debajo del 10 %.
- Los trabajos de Cluster Spark no están activos.
Resolución
Para resolver un clúster de Amazon EMR que no termina o termina antes de lo esperado al utilizar una política de terminación automática, sigue estos pasos:
-
Confirma que el rol de perfil de instancia de Amazon Elastic Compute Cloud (Amazon EC2) EMR_EC2_DefaultRole tenga los siguientes permisos. Si el rol de perfil de instancia no tiene los siguientes permisos, el clúster permanece activo una vez que se agota el tiempo de espera de inactividad.
{
"Version": "2012-10-17",
"Statement": {
"Sid": "AllowAutoTerminationPolicyActions",
"Effect": "Allow",
"Action": [
"elasticmapreduce:PutAutoTerminationPolicy",
"elasticmapreduce:GetAutoTerminationPolicy",
"elasticmapreduce:RemoveAutoTerminationPolicy"
],
"Resource": "your-resources"
}
}
-
En todas las versiones de Amazon EMR, asegúrate de que el proceso metrics-collector esté en ejecución. El proceso metrics-collector recopila las métricas para determinar la terminación automática.
Para comprobar el proceso metrics-collector, ejecuta los siguientes comandos:
ps -ef|grep metrics-collector
Alternativa:
systemctl status metricscollector.service
Para obtener más información, consulta ¿Cómo reinicio un servicio en Amazon EMR?
-
Consulta las métricas de CloudWatch del clúster de Amazon EMR. Asegúrate de que la métrica de CloudWatch AutoTerminationClusterIdle muestre 1 en el clúster. Si la métrica muestra 1, el clúster cumple los requisitos para la terminación automática. Si la métrica muestra 0, significa que el clúster está activo y no cumple los requisitos para la terminación automática.
-
En el caso de las versiones de Amazon EMR anteriores a la 6.15.0, comprueba si has anulado la versión de Java predeterminada en el clúster de EMR. Si anulas la versión de Java predeterminada que se usa en Amazon EMR, la terminación automática no funcionará según lo esperado.
Para resolver este problema, ejecuta el siguiente script en la instancia principal de un clúster en ejecución o como acción de arranque en un clúster nuevo:
#Change EMR daemon startup scripts to use JDK8
sudo sed -i 's#$JAVA_HOME#/usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre#g' /usr/bin/logpusher
sudo sed -i 's#$JAVA_HOME#/usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre#g' /usr/bin/instance-controller
sudo sed -i 's#/usr/bin/java#/usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java#g' /usr/bin/metricscollector
#Restart the daemons
sudo systemctl restart instance-controller
sudo systemctl restart logpusher
sudo systemctl restart metricscollector.service