# de l'échec de la Carte de Tâches dépassé la limite autorisée
Je suis en train d'essayer mes mains sur Hadoop en streaming à l'aide de Python. J'ai écrit carte simple et de réduire les scripts par prendre l'aide de ici
map
script est comme suit :
#!/usr/bin/env python
import sys, urllib, re
title_re = re.compile("<title>(.*?)</title>", re.MULTILINE | re.DOTALL | re.IGNORECASE)
for line in sys.stdin:
url = line.strip()
match = title_re.search(urllib.urlopen(url).read())
if match :
print url, "\t", match.group(1).strip()
et reduce
script est comme suit :
#!/usr/bin/env python
from operator import itemgetter
import sys
for line in sys.stdin :
line = line.strip()
print line
Après l'exécution de ces scripts à l'aide d'hadoop streaming jar, map
les tâches de finition, et je vois qu'ils sont achevées à 100%, mais reduce
travail coincé à 22%, et après une longue période de temps, il donne ERROR streaming.StreamJob: Job not successful. Error: # of failed Map Tasks exceeded allowed limit. FailedCount: 1.
erreur.
Je ne suis pas en mesure de trouver exactement la raison derrière cela.
Ma fenêtre de terminal ressemble comme suit :
shekhar@ubuntu:/host/Shekhar/Softwares/hadoop-1.0.0$ hadoop jar contrib/streaming/hadoop-streaming-1.0.0.jar -mapper /host/Shekhar/HadoopWorld/MultiFetch.py -reducer /host/Shekhar/HadoopWorld/reducer.py -input /host/Shekhar/HadoopWorld/urls/* -output /host/Shekhar/HadoopWorld/titles3
Warning: $HADOOP_HOME is deprecated.
packageJobJar: [/tmp/hadoop-shekhar/hadoop-unjar2709939812732871143/] [] /tmp/streamjob1176812134999992997.jar tmpDir=null
12/05/27 11:27:46 INFO util.NativeCodeLoader: Loaded the native-hadoop library
12/05/27 11:27:46 INFO mapred.FileInputFormat: Total input paths to process : 3
12/05/27 11:27:46 INFO streaming.StreamJob: getLocalDirs(): [/tmp/hadoop-shekhar/mapred/local]
12/05/27 11:27:46 INFO streaming.StreamJob: Running job: job_201205271050_0006
12/05/27 11:27:46 INFO streaming.StreamJob: To kill this job, run:
12/05/27 11:27:46 INFO streaming.StreamJob: /host/Shekhar/Softwares/hadoop-1.0.0/libexec/../bin/hadoop job -Dmapred.job.tracker=localhost:9001 -kill job_201205271050_0006
12/05/27 11:27:46 INFO streaming.StreamJob: Tracking URL: http://localhost:50030/jobdetails.jsp?jobid=job_201205271050_0006
12/05/27 11:27:47 INFO streaming.StreamJob: map 0% reduce 0%
12/05/27 11:28:07 INFO streaming.StreamJob: map 67% reduce 0%
12/05/27 11:28:37 INFO streaming.StreamJob: map 100% reduce 0%
12/05/27 11:28:40 INFO streaming.StreamJob: map 100% reduce 11%
12/05/27 11:28:49 INFO streaming.StreamJob: map 100% reduce 22%
12/05/27 11:31:35 INFO streaming.StreamJob: map 67% reduce 22%
12/05/27 11:31:44 INFO streaming.StreamJob: map 100% reduce 22%
12/05/27 11:34:52 INFO streaming.StreamJob: map 67% reduce 22%
12/05/27 11:35:01 INFO streaming.StreamJob: map 100% reduce 22%
12/05/27 11:38:11 INFO streaming.StreamJob: map 67% reduce 22%
12/05/27 11:38:20 INFO streaming.StreamJob: map 100% reduce 22%
12/05/27 11:41:29 INFO streaming.StreamJob: map 67% reduce 22%
12/05/27 11:41:35 INFO streaming.StreamJob: map 100% reduce 100%
12/05/27 11:41:35 INFO streaming.StreamJob: To kill this job, run:
12/05/27 11:41:35 INFO streaming.StreamJob: /host/Shekhar/Softwares/hadoop-1.0.0/libexec/../bin/hadoop job -Dmapred.job.tracker=localhost:9001 -kill job_201205271050_0006
12/05/27 11:41:35 INFO streaming.StreamJob: Tracking URL: http://localhost:50030/jobdetails.jsp?jobid=job_201205271050_0006
12/05/27 11:41:35 ERROR streaming.StreamJob: Job not successful. Error: # of failed Map Tasks exceeded allowed limit. FailedCount: 1. LastFailedTask: task_201205271050_0006_m_000001
12/05/27 11:41:35 INFO streaming.StreamJob: killJob...
Streaming Job Failed!
Quelqu'un peut-il m'aider??
MODIFIER
tracker d'emploi les détails sont comme suit :
Hadoop job_201205271050_0006 on localhost
User: shekhar
Job Name: streamjob1176812134999992997.jar
Job File: file:/tmp/hadoop-shekhar/mapred/staging/shekhar/.staging/job_201205271050_0006/job.xml
Submit Host: ubuntu
Submit Host Address: 127.0.1.1
Job-ACLs: All users are allowed
Job Setup: Successful
Status: Failed
Failure Info:# of failed Map Tasks exceeded allowed limit. FailedCount: 1. LastFailedTask: task_201205271050_0006_m_000001
Started at: Sun May 27 11:27:46 IST 2012
Failed at: Sun May 27 11:41:35 IST 2012
Failed in: 13mins, 48sec
Job Cleanup: Successful
Black-listed TaskTrackers: 1
Kind % Complete Num Tasks Pending Running Complete Killed Failed/Killed
Task Attempts
map 100.00%
3 0 0 2 1 4 / 0
reduce 100.00%
1 0 0 0 1 0 / 1
- Aller à l'url de suivi localhost:50030/jobdetails.jsp?jobid=job_201205271050_0006 pour trouver les erreurs
- J'ai ouvert cette url, mais il y a aussi la même erreur...
- Avez-vous vérifié le stdout/stderr journaux de tâches individuelles qui ont échoué?
- u peut me dire comment faire pour vérifier ces journaux d'erreur? Où puis-je trouver ces journaux?
- pour les futurs lecteurs: les journaux sont trouvés à la
$HADOOP_HOME/logs/
, assurez-vous de configurer$HADOOP_HOME/etc/hadoop/log4j...
Vous devez vous connecter pour publier un commentaire.
cette erreur est une erreur générique, que trop de Carte tâches n'a pas pu terminer:
vous pouvez utiliser le DME de la Console pour naviguer dans les journaux pour l'individu Map /reduce tâches.
Ensuite, vous devriez être capable de voir ce qu'est la question.
Dans mon cas j'ai eu cette erreur quand j'ai fait des petites erreurs, comme paramètre le chemin vers le script de Carte de manière incorrecte.
étapes pour afficher les journaux des Tâches:
http://antipatterns.blogspot.nl/2013/03/amazon-emr-map-reduce-error-of-failed.html
J'ai juste eu le même message d'erreur s'afficher. Dans mon cas, il s'est avéré être une erreur d'analyse. Il y avait un "imprévu" nouvelle ligne à des endroits qui le stdin séparer la ligne à. Je voudrais vous suggérons de vérifier votre fichier de données. Une fois que j'ai enlevé la colonne qui avait ces nouvelles lignes, il a bien fonctionné.
Vérifier votre stderr premier.
Votre information n'est pas suffisant pour décider de quelle erreur il est, stderr généralement dans:
{votre hadoop temp dir ici}/mapred/local/userlogs/{votre travail id}/{tenter votre id}/stderr
De Sean réponse est la plupart des cas lors de la première utilisation de hadoop, donc je suppose que vous pourriez obtenir un "env: python\r: Aucun fichier ou répertoire' erreur. Si oui, il suffit de remplacer votre CR à LF pour résoudre ce problème. il suffit d'exécuter un script pour remplacer \r \n
Ajoutez la ligne suivante au début de votre Mappeur et Réducteur: