Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
VPCerreurs
Les erreurs suivantes sont communes à VPC la configuration d'AmazonEMR.
Rubriques
Configuration de sous-réseau non valide
Sur la page Cluster Details (Détails de cluster), dans le champ Status (État), vous voyez une erreur similaire à ce qui suit :
The subnet configuration was invalid: Cannot find route to InternetGateway in main RouteTable
rtb-id
for vpc vpc-id
.
Pour résoudre ce problème, vous devez créer un Internet Gateway et l'associer à votreVPC. Pour plus d'informations, consultez la section Ajout d'une passerelle Internet à votre VPC.
Vous pouvez également vérifier que vous avez configuré votre compte VPC avec les options Activer la DNS résolution et Activer le support des DNS noms d'hôte activées. Pour plus d'informations, consultez la section Utilisation DNS avec votre VPC.
Ensemble DHCP d'options manquant
Vous voyez un échec d'étape dans le journal système (syslog) de cluster avec une erreur similaire à ce qui suit :
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.
or
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.
Pour résoudre ce problème, vous devez configurer un VPC qui inclut un ensemble d'DHCPoptions dont les paramètres sont définis sur les valeurs suivantes :
Note
Si vous utilisez la région AWS GovCloud (USA Ouest), définissez domain-name sur au us-gov-west-1.compute.internal
lieu de la valeur utilisée dans l'exemple suivant.
-
nom-domaine =
ec2.internal
Utilisez
ec2.internal
si votre région est USA Est (Virginie du Nord). Pour les autres régions, utilisezregion-name
.compute.internal
. Par exemple, dans us-west-2, utilisez domain-name =.us-west-2.compute.internal
-
domain-name-servers =
AmazonProvidedDNS
Pour plus d'informations, consultez la section Ensembles DHCP d'options.
Erreurs d'autorisations
Une défaillance dans le journal stderr
pour une étape indique qu'une ressource Amazon S3 n'a pas les autorisations appropriées. Il s'agit d'une erreur 403 et l'erreur ressemble à :
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 le ActionOnFailure paramètre est défini surTERMINATE_JOB_FLOW
, le cluster se terminera avec l'état,SHUTDOWN_COMPLETED_WITH_ERRORS
.
Quelques façons pour résoudre ce problème incluent les suivantes :
-
Si vous utilisez une politique de compartiment Amazon S3 au sein d'unVPC, assurez-vous de donner accès à tous les compartiments en créant un VPC point de terminaison et en sélectionnant Tout autoriser sous l'option Politique lors de la création du point de terminaison.
-
Assurez-vous que toutes les politiques associées aux ressources S3 incluent celles VPC dans lesquelles vous lancez le cluster.
-
Essayez d'exécuter la commande suivante à partir de votre cluster afin de vérifier que vous pouvez accéder au compartiment
hadoop fs -copyToLocal s3://
path-to-bucket
/tmp/ -
Vous pouvez obtenir des informations de débogage plus spécifiques en définissant le paramètre
log4j.logger.org.apache.http.wire
surDEBUG
dans le fichier/home/hadoop/conf/log4j.properties
sur le cluster. Vous pouvez vérifier le fichier journalstderr
après avoir essayé d'accéder au compartiment depuis le cluster. Le fichier journal fournira des informations plus détaillées :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]"
Erreurs qui se traduisent par START_FAILED
Avant la AMI version 3.7.0, VPCs lorsqu'un nom d'hôte est spécifié, Amazon EMR mappe les noms d'hôte internes du sous-réseau avec des adresses de domaine personnalisées comme suit :. ip-
Par exemple, si le nom d'hôte était X.X.X.X.customdomain.com
.tldip-10.0.0.10
et si l'VPCoption de nom de domaine était définie sur customdomain.com, le nom d'hôte résultant mappé par Amazon serait. EMR ip-10.0.1.0.customdomain.com
Une entrée est ajoutée dans /etc/hosts
pour résoudre le nom d'hôte sur 10.0.0.10. Ce comportement a été modifié avec la AMI version 3.7.0 et Amazon EMR honore désormais VPC entièrement la DHCP configuration du. Précédemment, les clients pouvaient également utiliser une action d'amorçage pour spécifier un mappage de nom d'hôte.
Si vous souhaitez conserver ce comportement, vous devez fournir la configuration de résolution DNS et de transfert dont vous avez besoin pour le domaine personnalisé.
Cluster Terminated with
errors
et NameNode ne parvient pas à démarrer
Lors du lancement d'un EMR VPC cluster utilisant un nom de DNS domaine personnalisé, votre cluster peut échouer avec le message d'erreur suivant dans la console :
Terminated with errors On the master instance(
instance-id
), bootstrap action 1 returned a non-zero return code
L'échec est dû à l' NameNode impossibilité de démarrer. Cela entraînera la découverte de l'erreur suivante dans les NameNode journaux, dont Amazon S3 URI est de la forme s3://
:mybucket
/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)
Cela est dû à un problème potentiel selon lequel une EC2 instance peut avoir plusieurs ensembles de noms de domaine complets lors du lancement de EMR clusters dans unVPC, qui utilise à la fois un AWS serveur fourni et un DNS serveur personnalisé fourni par l'utilisateurDNS. Si le DNS serveur fourni par l'utilisateur ne fournit aucun enregistrement pointeur (PTR) pour les enregistrements A utilisés pour désigner les nœuds d'un EMR cluster, le démarrage des clusters échouera s'ils sont configurés de cette manière. La solution consiste à ajouter 1 PTR enregistrement pour chaque enregistrement A créé lorsqu'une EC2 instance est lancée dans l'un des sous-réseaux duVPC.