¿Por qué finalizó mi clúster de Amazon EMR con el error “application provisioning failed” (error en el aprovisionamiento de la aplicación)?

8 minutos de lectura
0

Mi clúster de Amazon EMR finalizó con el error “application provisioning failed” (error en el aprovisionamiento de la aplicación). ¿Qué significa este error y cómo puedo solucionarlo?

Resolución

Puede aparecer el error “application provisioning failed” (error en el aprovisionamiento de la aplicación) cuando Amazon EMR no puede instalar, configurar o iniciar el software especificado al lanzar un clúster de EMR. En las siguientes secciones se muestra cómo encontrar y revisar los registros de aprovisionamiento. También se muestran los diferentes tipos de errores y los pasos que puede tomar para resolverlos.

Revisar los registros de aprovisionamiento de Amazon EMR almacenados en Amazon S3

Los registros de aprovisionamiento de Amazon EMR se almacenan en un bucket de Amazon Simple Storage Service (Amazon S3) especificado al lanzar el clúster. La ubicación de almacenamiento de los registros utiliza la siguiente sintaxis de URI de Amazon S3:

s3://example-log-location/example-cluster-ID/node/example-primary-node-ID/provision-node/apps-phase/0/example-UUID/puppet.log.gz

Nota: Sustituya example-log-location, example-cluster-ID, example-primary-node-ID y example-UUID por el nombre de su sistema.

  1. Abra a la consola de Amazon EMR. En el panel de navegación, elija Clusters (Clústeres). A continuación, elija el clúster de EMR que ha fallado para ver los detalles del clúster.
  2. En la sección Summary (Resumen), elija “Terminated with errors” (Terminado con errores) y anote el ID del nodo principal incluido en el mensaje de error.
  3. En la sección Cluster logs (Registros de clústeres), elija la URL de ubicación de Amazon S3 para redirigirla a los registros del clúster en la consola de Amazon S3.
  4. Navegue hasta la carpeta de UUID mediante esta ruta: node/example-primary-node-id/provision-node/apps-phase/0/example-UUID/.
    Nota: Sustituya example-primary-node-ID y example-UUID por el nombre de su sistema.
  5. En la lista resultante, seleccione puppet.log.gz y elija Open (Abrir) para ver el aprovisionamiento en una nueva pestaña del navegador.

Identificar los motivos de los errores en los registros de aprovisionamiento

Los parámetros de configuración no compatibles pueden provocar errores. Los errores también pueden deberse a nombres de servidor incorrectos, contraseñas incorrectas o problemas generales del sistema operativo. Busque en los registros palabras clave relacionadas, como “error” o “error”.

La siguiente es una lista de los tipos de errores más comunes:

  • Problemas para conectarse a un metaalmacén externo con una instancia de Amazon Relational Database Service (Amazon RDS).
  • Problemas para conectarse a un centro de distribución de claves (KDC) externo.
  • Problemas al iniciar servicios, como YARN ResourceManager y Hadoop NameNode.
  • Problemas al descargar o instalar aplicaciones.
  • Los registros de S3 no están disponibles.

Problemas para conectarse a un metaalmacén externo con una instancia de Amazon RDS

Algunas aplicaciones de Amazon EMR, como Hive, Hue o Oozie, se pueden configurar para almacenar datos en una base de datos externa, como Amazon RDS. Cuando hay un problema con la conexión, aparece un mensaje.

El siguiente es un ejemplo de mensaje de error de Hive:

2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): Underlying cause: java.sql.SQLNonTransientConnectionException : Could not connect to address=(host=hostname)(port=3306)(type=master) : Socket fail to connect to host:hostname, port:3306. hostname
2022-11-26 02:59:36 +0000 /Stage[main]/Hadoop_hive::Init_metastore_schema/Exec[init hive-metastore schema]/returns (notice): SQL Error code: -1

Para resolver este tipo de error:

  • Compruebe que el nombre de host, el usuario, la contraseña y la base de datos de la instancia de RDS sean correctos.
  • Compruebe que las reglas entrantes del grupo de seguridad de instancias de RDS permitan las conexiones desde el grupo de seguridad del nodo principal de Amazon EMR.

Problemas para conectarse a un KDC externo

Amazon EMR le permite configurar un KDC externo para añadir una capa de seguridad adicional. También puede crear una relación de confianza con un servidor de Active Directory. Cuando hay problemas para contactar con el KDC o unirse a un dominio, aparece un mensaje.

El siguiente es un ejemplo de mensaje de error de Puppet:

2022-11-26 03:02:01 +0000 Puppet (err): 'echo "${AD_DOMAIN_JOIN_PASSWORD}" | realm join -v -U "${AD_DOMAIN_JOIN_USER}"@"${CROSS_REALM_TRUST_REALM}" "${CROSS_REALM_TRUST_DOMAIN}"' returned 1 instead of one of [0]
2022-11-26 03:02:01 +0000 /Stage[main]/Kerberos::Ad_joiner/Exec[realm_join]/returns (err): change from 'notrun' to ['0'] failed: 'echo "${AD_DOMAIN_JOIN_PASSWORD}" | realm join -v -U "${AD_DOMAIN_JOIN_USER}"@"${CROSS_REALM_TRUST_REALM}" "${CROSS_REALM_TRUST_DOMAIN}"' returned 1 instead of one of [0]

Para resolver este tipo de error:

  • Compruebe que el dominio de Kerberos esté escrito correctamente.
  • Compruebe que la contraseña administrativa del KDC esté escrita correctamente.
  • Compruebe que el usuario y la contraseña de unión a Active Directory estén escritos correctamente.
  • Compruebe que el usuario de unión de Active Directory existe en Active Directory y tiene los permisos correctos.
  • Compruebe que los servidores de KDC y Active Directory estén en Amazon EC2. A continuación, compruebe que las reglas entrantes de los grupos de seguridad de KDC y Active Directory permitan las conexiones desde el grupo de seguridad del nodo principal de Amazon EMR.
  • Compruebe que KDC y Active Directory no estén en Amazon EC2. A continuación, compruebe que KDC y Active Directory permiten conexiones desde la nube privada virtual (VPC) y la subred del clúster EMR.

Problemas al iniciar servicios, como YARN ResourceManager, Hadoop NameNode o Spark History Server

Amazon EMR permite la configuración personalizada de todas las aplicaciones al iniciar el clúster de EMR. Sin embargo, a veces estas configuraciones impiden que los servicios se inicien. Cuando hay un problema que impide que se inicie un servicio, aparece un mensaje.

El siguiente es un ejemplo de mensaje de error de Spark History Server:

2022-11-26 03:34:13 +0000 Puppet (err): Systemd start for spark-history-server failed!
journalctl log for spark-history-server:
-- Logs begin at Sat 2022-11-26 03:27:57 UTC, end at Sat 2022-11-26 03:34:13 UTC. --
Nov 26 03:34:10 ip-192-168-1-32 systemd[1]: Starting Spark history-server...
Nov 26 03:34:10 ip-192-168-1-32 spark-history-server[1076]: Starting Spark history-server (spark-history-server):[OK]
Nov 26 03:34:10 ip-192-168-1-32 su[1112]: (to spark) root on none
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: spark-history-server.service: control process exited, code=exited status=1
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: Failed to start Spark history-server.
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: Unit spark-history-server.service entered failed state.
Nov 26 03:34:13 ip-192-168-1-32 systemd[1]: spark-history-server.service failed.
2022-11-26 03:34:13 +0000 /Stage[main]/Spark::History_server/Service[spark-history-server]/ensure (err): change from 'stopped' to 'running' failed: Systemd start for spark-history-server failed!
journalctl log for spark-history-server:

Para resolver este tipo de error:

  • Compruebe el servicio que no se pudo iniciar. Compruebe si las configuraciones proporcionadas están escritas correctamente.
  • Navegue por la siguiente ruta para ver el registro de S3 e investigar el motivo del error: s3://example-log-location/example-cluster-ID/node/example-primary-node-ID/applications/example-failed-application/example-failed-service.gz.
    Nota: Sustituya example-log-location, example-cluster-ID, example-primary-node-ID, example-failed-application y example-failed-service por el nombre de su sistema.

Problemas al descargar o instalar aplicaciones

Amazon EMR puede instalar muchas aplicaciones. Sin embargo, a veces hay un problema cuando no se puede descargar o instalar una aplicación. Esto puede provocar un error en el clúster de EMR. Cuando se produce este error, los registros de aprovisionamiento no se completan. En su lugar, debe revisar el registro de stderr.gz para encontrar mensajes similares causados por instalaciones fallidas de yum.

El siguiente es un ejemplo de mensaje de error de stderr.gz:

stderr.gz
Error Summary
-------------
Disk Requirements:
  At least 2176MB more space needed on the / filesystem.
  
2022-11-26 03:18:44,662 ERROR Program: Encountered a problem while provisioning
java.lang.RuntimeException: Amazon-linux-extras topics enabling or yum packages installation failed.

Para resolver este tipo de error, aumente el volumen raíz de Amazon Elastic Block Store (Amazon EBS) durante el lanzamiento del clúster de EMR.

Los registros de S3 no están disponibles

Amazon EMR no aprovisiona las aplicaciones y no se genera ningún registro en Amazon S3. En este escenario, es probable que un error de red haya provocado un error en el registro de S3.

Para resolver este tipo de error:

  • Compruebe que la opción Logging (Registro) esté activada durante el lanzamiento del clúster EMR. Para obtener más información, consulte Configure cluster logging and debugging (Configurar el registro y la depuración de clústeres).
  • Cuando utilice una AMI personalizada, compruebe que no haya reglas de firewall que interfieran con la configuración de red de Amazon EMR requerida. Para obtener más información, consulte Working with Amazon EMR-managed security groups (Trabajar con grupos de seguridad administrados por Amazon EMR).
  • Cuando utilice una AMI personalizada, compruebe si hay algún nodo principal que haya fallado. Abra la consola de Amazon EMR y, en el panel de navegación, seleccione Hardware para determinar si los clústeres no pueden lanzar ningún nodo principal.
  • Cuando utilice una AMI personalizada, compruebe que sigue las prácticas recomendadas. Para obtener más información, consulte Using a custom AMI (Uso de una AMI personalizada).

Información relacionada

EMR cluster failed to provision (No se pudo aprovisionar el clúster EMR)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año