2017-08-31 2 views
0

Je ssh au maître et exécute mon travail hadoop sur la console à des fins de développement. Mon travail échoue d'une manière mystérieuse, avec de nombreuses traces de pile java qui ne font pas de sens pour moi, voir ci-dessous:Mon travail Python que je cours sur le maître du cluster EMR échoue, comment puis-je résoudre les problèmes?

java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 143 
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:322) 
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:535) 
at org.apache.hadoop.streaming.PipeMapper.map(PipeMapper.java:120) 
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54) 
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:34) 
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:455) 
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:344) 
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:422) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) 

Répondre

0

Regardez les journaux pour une erreur dans votre code python. Pour EMR/fil, vous pouvez trouver vos journaux à partir de l'interface utilisateur WEB ou sur le shell maître de cluster comme indiqué ci-dessous (votre ID d'application sera différent qu'il est imprimé lorsque les travaux démarre). Il y a beaucoup de sortie, redirigez-la dans un fichier comme je l'affiche et recherchez des traces de pile python pour voir ce qui n'a pas fonctionné avec votre application. Toutes ces traces de pile indiquent généralement qu'au moins un processus de réduction a échoué mais que le stderr du processus n'est pas affiché dans la sortie CLI/shell.

$ yarn logs -applicationId application_1503951120983_0031 > /tmp/log 
+0

Aujourd'hui, j'ai dû utiliser cela pour résoudre un problème dans une tâche EMR. J'ai essayé de trouver le journal dans S3 où les journaux sont déversés et auraient dû être dans un fichier appelé quelque chose comme "j-XXXXXXXXXXXXXXX/containers/application_151935143321369_0010/container_151239351321369_0010_01_001374/stderr.gz" mais ce fichier n'existe pas pour les tâches échouées. J'ai donc dû reproduire la situation, laisser le cluster fonctionner après la panne et suivre la direction. – gae123