2011-12-02 9 views
8

Estoy ejecutando una tarea en modo pseudo-distribuido en mi computadora portátil de 4 núcleos. ¿Cómo puedo asegurarme de que todos los núcleos se usan efectivamente? Actualmente mi rastreador de trabajo muestra que solo se está ejecutando un trabajo a la vez. ¿Eso significa que solo se usa un núcleo?Utilización completa de todos los núcleos en el modo pseudo distribuido de Hadoop

Los siguientes son mis archivos de configuración.

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> 

EDITAR : Según la respuesta, necesito agregar las siguientes propiedades en mapred-site.xml

<property> 
    <name>mapred.map.tasks</name> 
    <value>4</value> 
    </property> 
    <property> 
    <name>mapred.reduce.tasks</name> 
    <value>4</value> 
    </property> 
+0

mapred.map.tasks y mapred.reduce.tasks no controlan el # de tareas de asignación/reducción por nodo. Por favor, prueba y asegúrate antes de seleccionar una respuesta. –

+0

@Praveen es correcto, pero dado que tiene 1 nodo, necesitará al menos sugerirle que también use más mapeadores, no solo aumente el máximo por rastreador. –

+0

@Nemo Además de agregar los valores mapred. (Map | reduce) .tasks de 4 en mapred-site.xml, ¿ha cambiado los valores de mapreduce.tasktracker. (Map | reduce) .tasks.maximum para completar utilizar todos los núcleos? – AST

Respuesta

3

mapred.map.tasks y mapred.reduce.tasks controlará esto, y (creo) se establecería en mapred-site.xml. Sin embargo, esto los establece como valores predeterminados de todo el cluster; más generalmente, los configuraría por trabajo. Puede establecer los mismos params en la línea de comandos de java con -D

+0

¿Cuántas tareas de asignación y reducción serían óptimas para un sistema de 4 núcleos? – Nemo

+0

4 probablemente sea un buen comienzo, aunque es posible que esté vinculado rápidamente a una máquina en lugar de a una CPU. –

+0

Creo que ese es el nuevo problema. http://stackoverflow.com/questions/8357630/error-when-setting-mapred-map-tasks-in-pseudo-distributed-mode – Nemo

6

mapreduce.tasktracker.map.tasks.maximum y mapreduce.tasktracker.reduce.tasks.maximum las propiedades controlan el número de mapas y reducen las tareas por nodo. Para un procesador de 4 núcleos, comience con 2/2 y desde allí cambie los valores si es necesario. Una ranura es un mapa o una ranura reducida, establecer los valores en 4/4 hará que la estructura Hadoop lance 4 mapas y 4 reduzca tareas simultáneamente. Un total de 8 tareas de asignación y reducción se ejecutan a la vez en un nodo.

mapred.map.tasks y mapred.reduce.tasks propiedades controlan el número total de tareas de asignación/reducción para el trabajo y no el número de tareas por nodo. Además, mapred.map.tasks es una sugerencia para el marco de Hadoop y el número total de tareas de mapa para el trabajo es igual a # de InputSplits.

Cuestiones relacionadas