Comment planifier Hadoop Map tâches en multi-core 8 nœud de cluster?
J'ai une carte "seule" (pas de réduire la phase programme. La taille de fichier d'entrée est assez grand pour créer 7 carte tâches et j'ai vérifié que par la recherche de la sortie produit (000 à part006) . Maintenant, mon cluster a 8 nœuds, chacun avec 8 coeurs et 8 GO de mémoire et un système de fichiers partagé hébergé à la tête de nœud.
Ma question est puis-je choisir entre l'exécution de tous les 7 carte tâches dans 1 nœud ou de l'exécution de l'7 carte tâches dans 7 différents nœuds esclaves (1 groupe par nœud). Si je peux le faire, alors à quoi changer dans mon code et le fichier de configuration est nécessaire.
J'ai essayé le paramètre "mapred.tasktracker.carte.les tâches.maximum" à 1 et 7 dans mon code, mais je didnot trouver appréciable de la différence de temps. Dans mon fichier de configuration il est défini comme 1.
OriginalL'auteur justin waugh | 2012-04-29
Vous devez vous connecter pour publier un commentaire.
"mapred.tasktracker.map.tasks.maximum"
traite avec le numéro de la carte de tâches qui devrait être lancé sur chaque nœud, pas le nombre de nœuds utilisés pour chaque carte de la tâche. Dans l'architecture Hadoop, il y a 1 tasktracker pour chaque nœud (esclaves) et 1 job tracker sur un nœud maître (master). Donc, si vous définissez la propriétémapred.tasktracker.map.tasks.maximum
, il suffira de changer le numéro de la carte de tâches à exécuter par nœud.La gamme de
"mapred.tasktracker.map.tasks.maximum"
est de1/2*cores/node
à2*cores/node
Le numéro de la carte de tâches que vous souhaitez global doit être défini à l'aide de
setNumMapTasks(int)
OriginalL'auteur Chaos
Quand vous dites un système de fichiers partagé hébergé une le nœud de tête, entendez-vous les données sont hébergées sur HDFS, ou sur certains NFS comme système de fichiers monté sur chaque nœud? Je suppose que tu veux dire HDFS, mais si vous êtes à l'aide de NFS ou quelque chose de similaire, alors vous devriez vous attendre à voir augmenter le débit avec HDFS (vous souhaitez déplacer le code de traitement des données, plutôt que de la déplacer les données de la machine de traitement)
Quelle est la taille de votre fichier d'entrée, et quel est-il de la scission de la taille, le format de fichier (texte, séquence...), facteur de réplication et de la compression methof?
Selon les réponses aux questions ci-dessus, Avec votre 8x8 de l'installation, vous pourriez être en mesure d'obtenir un meilleur rendement si vous réduisez la carte de split taille, et le facteur de réplication.
OriginalL'auteur Chris White
Vous devriez certainement exécuté le 7 carte tâches sur 7 nœuds, si possible. Tout l'avantage de MapReduce est d'être capable de paralléliser l'utilisation de votre ordinateur de sorte que chaque tâche s'exécute de manière aussi efficace que possible. Si vous avez exécuté le 7 carte tâches sur un seul nœud, chaque tâche serait en concurrence pour les mêmes ressources (RAM, CPU, IO) sur ce seul nœud.
Un réglage standard pour
mapred.tasktracker.map.tasks.maximum
est un par cœur, de sorte que vous pourriez changer le réglage de 8.En outre, si vous avez une Carte seule tâche, vous aurez envie d'une bonne raison pour définir le nombre de mappers pour certain nombre. Réglage du numéro de la carte de tâches est juste un "hint" pour le jobtracker sur la façon dont beaucoup de cartes à exécuter, mais il est finalement décidé par le jobtracker basé sur la façon dont DFS est le stockage de vos données d'entrée. Ce wiki a plus de détails.
Vous ne voulez contrôler le nombre de réduire les tâches dans certains cas, cependant. Par exemple, si je voulais une liste de nombres triés je tiens à assurer que toutes mes données transmises par le biais d'un seul réducteur.
OriginalL'auteur Jeff Wu