Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Errores de la VPC durante las operaciones del clúster de Amazon EMR
Los siguientes errores son comunes a la configuración de VPC en Amazon EMR.
Temas
Configuración de subredes no válida
En la página Cluster Details (Detalles del clúster), en el campo Status (Estado), ve un error similar al siguiente:
The subnet configuration was invalid: Cannot find route to InternetGateway in main RouteTable
rtb-id
for vpc vpc-id
.
Para solucionar este problema, debe crear una gateway de Internet y asociarla a la VPC. Para obtener más información, consulte Adding an internet gateway to your VPC (Cómo añadir una gateway de Internet a la VPC).
De forma alternativa, compruebe que ha configurado la VPC con las opciones Enable DNS resolution (Habilitar resolución de DNS) y Enable DNS hostname support (Habilitar el soporte de nombres de host DNS) habilitadas. Para obtener más información, consulte Utilización de DNS con su VPC.
Falta el conjunto de opciones de DHCP
Puede ver un error de paso en el registro del sistema (syslog) del clúster con un error similar al siguiente:
ERROR org.apache.hadoop.security.UserGroupInformation (main): PriviledgedActionException as:hadoop (auth:SIMPLE) cause:java.io.IOException: org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException: Application with id '
application_id
' doesn't exist in RM.
o
ERROR org.apache.hadoop.streaming.StreamJob (main): Error Launching job : org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException: Application with id '
application_id
' doesn't exist in RM.
Para solucionar este problema, debe configurar una VPC que incluya un conjunto de opciones de DHCP cuyos parámetros se hayan definido en los siguientes valores:
nota
Si usa la región AWS GovCloud (EE. UU. Oeste), establezca el nombre de dominio us-gov-west-1.compute.internal
en lugar del valor utilizado en el siguiente ejemplo.
-
domain-name =
ec2.internal
Use
ec2.internal
si su región es Este de EE. UU. (Norte de Virginia). Para otras regiones, utilice.region-name
.compute.internal
Por ejemplo en us-west-2, utilice domain-name=us-west-2.compute.internal
. -
domain-name-servers =
AmazonProvidedDNS
Para obtener más información, consulte Conjuntos de opciones de DHCP.
Errores de permisos
Un error en el registro stderr
de un paso indica que un recurso de Amazon S3 no tiene los permisos adecuados. Se trata de un error 403 y su aspecto es:
Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID:
REQUEST_ID
Si ActionOnFailure se establece enTERMINATE_JOB_FLOW
, esto provocará que el clúster termine con el estado,SHUTDOWN_COMPLETED_WITH_ERRORS
.
Algunas formas de solucionar este problema son:
-
Si está utilizando una política de bucket de Amazon S3 dentro de una VPC, asegúrese de proporcionar acceso a todos los buckets. Para ello, cree un punto de conexión de VPC y seleccione Permitir todo en la opción Política al crear el punto de conexión.
-
Asegúrese de que las políticas asociadas con recursos de S3 incluyan la VPC en la que lanzar el clúster.
-
Pruebe a ejecutar el siguiente comando desde el clúster para verificar que puede acceder al bucket
hadoop fs -copyToLocal s3://
path-to-bucket
/tmp/ -
Puede obtener información más específica sobre la depuración definiendo el parámetro
log4j.logger.org.apache.http.wire
enDEBUG
en el archivo/home/hadoop/conf/log4j.properties
en el clúster. Puede comprobar el archivo de registrostderr
después de intentar acceder al bucket desde el clúster. El archivo de registro proporcionará información más detallada:Access denied for getting the prefix for bucket - us-west-2.elasticmapreduce with path samples/wordcount/input/ 15/03/25 23:46:20 DEBUG http.wire: >> "GET /?prefix=samples%2Fwordcount%2Finput%2F&delimiter=%2F&max-keys=1 HTTP/1.1[\r][\n]" 15/03/25 23:46:20 DEBUG http.wire: >> "Host: us-west-2.elasticmapreduce.s3.amazonaws.com[\r][\n]"
Errores que dan lugar a START_FAILED
Antes de la AMI 3.7.0, para los VPCs casos en los que se especificaba un nombre de host, Amazon EMR mapeaba los nombres de host internos de la subred con direcciones de dominio personalizadas de la siguiente manera:. ip-
Por ejemplo, si el nombre de host fuera X.X.X.X.customdomain.com
.tldip-10.0.0.10
y la VPC tuviera la opción de nombre de dominio definida en customdomain.com, el nombre de host resultante asignado por Amazon EMR sería ip-10.0.1.0.customdomain.com
. Se añade una entrada en /etc/hosts
para resolver el nombre de host a 10.0.0.10. Este comportamiento se cambia con la AMI 3.7.0 y ahora Amazon EMR respeta completamente la configuración de DHCP de la VPC. Anteriormente, los clientes también podrían utilizar una acción de arranque para especificar un mapeo de nombre de host.
Si desea conservar este comportamiento, debe proporcionar la DNS y reenviar la configuración de resolución que necesita para el dominio personalizado.
Se agrupa y no se puede iniciar Terminated with
errors
NameNode
Al lanzar un clúster de EMR en una VPC que hace uso de un nombre de dominio de DNS personalizado, el clúster podría devolver el siguiente mensaje de error en la consola:
Terminated with errors On the master instance(
instance-id
), bootstrap action 1 returned a non-zero return code
El error se debe a que NameNode no se pudo iniciar. Esto provocará el siguiente error en los NameNode registros, cuyo URI de Amazon S3 tiene el siguiente formatos3://
:amzn-s3-demo-bucket
/logs
/cluster-id
/daemons/master instance-id
/hadoop-hadoop-namenode-master node hostname
.log.gz
2015-07-23 20:17:06,266 WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem (main): Encountered exception loading fsimage java.io.IOException: NameNode is not formatted. at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:212) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1020) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:739) at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:537) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:596) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:765) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:749) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1441) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1507)
Esto se debe a un posible problema por el que una EC2 instancia puede tener varios conjuntos de nombres de dominio totalmente cualificados al lanzar clústeres de EMR en una VPC, lo que utiliza tanto un servidor DNS proporcionado como un servidor DNS AWS personalizado proporcionado por el usuario. Si el servidor de DNS proporcionado por el usuario no ofrece ningún registro de puntero (PTR) para ningún registro A utilizado para designar nodos en un clúster de EMR, los clústeres devolverán un error al iniciarse cuando se configuran de esta manera. La solución consiste en añadir 1 registro PTR por cada registro A que se cree cuando se lanza una EC2 instancia en cualquiera de las subredes de la VPC.