VPCerreurs - Amazon EMR

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.

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, utilisez region-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 sur DEBUG dans le fichier /home/hadoop/conf/log4j.properties sur le cluster. Vous pouvez vérifier le fichier journal stderr 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-X.X.X.X.customdomain.com.tld Par exemple, si le nom d'hôte était ip-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.