Mi equipo creó una aplicación Java utilizando las bibliotecas Hadoop para transformar un conjunto de archivos de entrada en resultados útiles. Dada la carga actual, un solo servidor multinúcleo funcionará bien para el próximo año más o menos. No (todavía) tenemos la necesidad de elegir un clúster Hadoop multiservidor, pero decidimos comenzar este proyecto "estar preparados".Ejecución de una aplicación Hadoop independiente en múltiples núcleos de CPU
Cuando ejecuto esta aplicación en la línea de comandos (o en eclipse o netbeans) todavía no he podido convencerlo de usar más de un mapa y/o reducir el hilo a la vez. Dado que la herramienta requiere mucha CPU, esta "rosca única" es mi actual cuello de botella.
Cuando se ejecuta en el perfilador netbeans veo que la aplicación se inicia varios hilos para diversos fines, pero sólo un único mapa/reducir se está ejecutando en el mismo momento.
Los datos de entrada se compone de varios archivos de entrada para Hadoop debería al menos ser capaz de ejecutar 1 hilo por cada archivo de entrada al mismo tiempo para la fase mapa.
¿Qué debo hacer para tener al menos 2 o incluso 4 hilos activos en ejecución (que debería ser posible para la mayor parte del tiempo de procesamiento de esta solicitud)?
Espero que esto sea algo muy tonto que he pasado por alto.
acabo de encontrar esto: https://issues.apache.org/jira/browse/MAPREDUCE-1367 Esto implementa la función que estaba buscando en Hadoop 0,21 Se introduce el mapreduce.local.map.tasks.maximum bandera de controlarlo.
Por ahora también he encontrado la solución que se describe here in this question.
Gracias, por su observación, descargué la fuente y busqué eso. Descubrí que cuando se ejecuta en modo local, se usa org.apache.hadoop.mapred.LocalJobRunner para ejecutar realmente el trabajo. El método run() simplemente hace todo de forma secuencial. Sin enhebrar en absoluto. Encontré org.apache.hadoop.mapreduce.lib.map.MultithreadedMapper Una característica muy extraña: una implementación del mapeador que realiza el subprocesamiento FUERA del marco real de Hadoop. Según la documentación, solo es útil si no está vinculado a la CPU. Nuestra herramienta está unida a la CPU, por lo que no podemos usar esto. –