La pleine utilisation de tous les cœurs en mode pseudo-distribué Hadoop
Question
Je suis en cours d'exécution d'une tâche en mode pseudo-distribué sur mon ordinateur portable 4 core. Comment puis-je faire en sorte que tous les cœurs soient effectivement utilisés. Actuellement, mon tracker emploi montre que seul un travail est en train d'exécuter à la fois. Est-ce que cela veut dire qu'un seul noyau est utilisé?
Les éléments suivants sont mes fichiers de configuration.
conf / core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
conf / hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
conf / mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
EDIT: Selon la réponse, je dois ajouter les propriétés suivantes dans mapred-site.xml
<property>
<name>mapred.map.tasks</name>
<value>4</value>
</property>
<property>
<name>mapred.reduce.tasks</name>
<value>4</value>
</property>
La solution
mapred.map.tasks
et mapred.reduce.tasks
contrôleront cela, et (je crois) serait mis en mapred-site.xml
. Cependant, cela établit ces paramètres par défaut comme l'échelle du cluster; plus généralement vous configurer ces derniers sur une base par emploi. Vous pouvez définir les mêmes params sur la ligne de commande java avec -D
Autres conseils
mapreduce.tasktracker.map.tasks.maximum
et les propriétés mapreduce.tasktracker.reduce.tasks.maximum
contrôlent le nombre de carte et réduire les tâches par nœud. Pour un processeur 4 central, commencer par 2/2 et de là, modifier les valeurs si nécessaire. Une fente est une carte ou une fente à réduire, le réglage des valeurs 4/4 fera le framework Hadoop lancement 4 carte et 4 réduire les tâches en même temps. Un total de 8 carte et réduire les tâches exécutées à la fois sur un nœud.
propriétés mapred.map.tasks
et mapred.reduce.tasks
contrôlent le nombre total de map / reduce tâches pour le travail et non le nombre de tâches par nœud. En outre, mapred.map.tasks
est une indication pour le framework Hadoop et le nombre total des tâches de la carte pour le travail est égal au nombre de InputSplits.