comment limiter la concurrente de l'exécution de la carte de tâches?
Mon hadoop version 1.0.2. Maintenant, je veux au plus 10 carte tâches en cours d'exécution en même temps. J'ai trouvé 2 variables liées à cette question.
a) mapred.travail.carte.capacité
mais dans ma version hadoop, ce paramètre semble abandonnée.
b) mapred.jobtracker.taskScheduler.maxRunningTasksPerJob (http://grepcode.com/file/repo1.maven.org/maven2/com.ning/metrics.collector/1.0.2/mapred-default.xml)
J'ai défini cette variable comme ci-dessous:
Configuration conf = new Configuration();
conf.set("date", date);
conf.set("mapred.job.queue.name", "hadoop");
conf.set("mapred.jobtracker.taskScheduler.maxRunningTasksPerJob", "10");
DistributedCache.createSymlink(conf);
Job job = new Job(conf, "ConstructApkDownload_" + date);
...
Le problème est que cela ne fonctionne pas. Il y a encore plus de 50 cartes de course comme le début de la tâche.
Après en regardant à travers les hadoop document, je ne peux pas trouver un autre à la limite de la concurrente de l'exécution de la carte de tâches.
J'espère que quelqu'un peut m'aider ,Merci.
=====================
Je hava trouvé la réponse à cette question, ici, de partager à d'autres personnes qui pourraient être intéressées.
À l'aide de la fair scheduler, avec un paramètre de configuration maxMaps pour définir l'une piscine simultanées maximum la tâche des fentes, dans l'Allocation de Fichier (fair-scheduler.xml).
Puis, quand vous soumettre des travaux, il suffit de définir la tâche de la file d'attente à la piscine.
parce que dans la carte de phase, je vais lire quelque chose de la source de données externe. Je ne veux pas il y a trop de connexions en même temps.
Vous pouvez télécharger les données que vous souhaitez localement? Vous pouvez ensuite suffit d'envoyer ce fichier de données le long de lorsque vous lancez votre travail, et ne pas avoir à vous soucier de les mappeurs comte.
OriginalL'auteur HaiWang | 2013-01-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir la valeur de
mapred.jobtracker.maxtasks.per.job
quelque chose d'autre que -1 (valeur par défaut). Cela limite le nombre de simultanée de la carte ou de réduire les tâches d'un emploi peut employer.Cette variable est décrite comme suit:
Je pense qu'il y avait des plans pour ajouter
mapred.max.maps.per.node
etmapred.max.reduces.per.node
de travail configs, mais ils n'ont jamais fait de les libérer.mapreduce.jobtracker.maxtasks.perjob
(ref)Aussi, la lecture de la description attentivement, je ne suis pas sûr de ce qui est la limite sur simultanée tâches. Il peut effectivement y avoir une limite sur le montant total des tâches. Il y a une autre propriété
mapreduce.jobtracker.taskscheduler.maxrunningtasks.perjob
décrit comme "Le nombre maximum de tâches en cours d'exécution pour un travail avant qu'il soit retardé."OriginalL'auteur Dave
Si vous êtes en utilisant Hadoop 2.7 ou plus récent, vous pouvez utiliser
mapreduce.job.running.map.limit
etmapreduce.job.running.reduce.limit
à restreindre la carte et de réduire les tâches à chaque niveau de la tâche.Fixer JIRA billet.
OriginalL'auteur Joel
mapred.tasktracker.carte.les tâches.maximum est la propriété de limiter le nombre de carte de tâches que vous pouvez exécuter à un moment. Avez configuré dans votre mapred-site.xml.
Reportez-vous à 2,7 en http://wiki.apache.org/hadoop/FAQ
ce paramètre description: Le nombre maximal de carte de tâches à exécuter simultanément par un groupe de suivi.
De ma lecture de votre question initiale,
mapred.tasktracker.map.tasks.maximum
résout le problème: il ne contrôle pas le nombre total de mappeurs, mais le nombre de contributeurs qui s'exécutent en même temps. Ainsi, il n'a pas d'incidence sur la logique ou la granularité de l'emploi, mais la vitesse à laquelle les ressources sont utilisées. J'ai eu le même problème, et ce paramètre a fonctionné pour moi (plus facile que d'installer un fair scheduler).OriginalL'auteur Magham Ravi
Le nombre de mappers feu sont décidées par le bloc d'entrée de taille. Le bloc d'entrée de taille est la taille des blocs dans lesquels les données sont divisées et envoyé à différents contributeurs s'il est lu à partir de la SF. Afin de contrôler le nombre de mappers nous avons pour contrôler la taille de bloc.
Il peut être contrôlé par le réglage des paramètres,
mapred.min.split.size
etmapred.max.split.size
, tandis que la configuration de l'emploi dans MapReduce. La valeur est à mettre en octets. Donc, si nous avons un 20 GO de fichiers, et nous voulons le feu 40 cartographes, alors nous avons besoin de le mettre à 20480 /40 = 512 MO chacun. Donc, pour que le code serait,où
conf
est un objet de laorg.apache.hadoop.conf.Configuration
classe.OriginalL'auteur aa8y
Lire sur la planification des emplois dans Hadoop(par exemple "fair scheduler"). vous pouvez créer une attente personnalisée avec de nombreux configuration et ensuite affecter votre travail. si vous limitez votre attente personnalisée au maximum la carte de la tâche à 10 puis chaque emploi que de céder à la file d'attente à la plupart auront 10 en même temps que la carte de la tâche.
OriginalL'auteur Amin Raeiszadeh