Executando um aplicativo Hadoop independente em vários núcleos da CPU

Minha equipe criou um aplicativo Java usando as bibliotecas do Hadoop para transformar vários arquivos de entrada em saída útil. Dada a carga atual, um único servidor multicore se sairá bem no próximo ano. Ainda não precisamos de um cluster Hadoop multiservidor, mas optamos por iniciar este projeto "em preparação".

Quando executo este aplicativo na linha de comando (ou no eclipse ou no netbeans), ainda não consegui convencê-lo a usar mais de um mapa e / ou reduzir o encadeamento de cada vez. Dado o fato de a ferramenta consumir muito a CPU, esse "encadeamento único" é o meu gargalo atual.

Ao executá-lo no criador de perfil do netbeans, vejo que o aplicativo inicia vários threads para várias finalidades, mas apenas um único mapa / redução está sendo executado no mesmo momento.

Os dados de entrada consistem em vários arquivos de entrada, portanto o Hadoop deve pelo menos ser capaz de executar 1 encadeamento por arquivo de entrada ao mesmo tempo na fase de mapeamento.

O que faço para ter pelo menos 2 ou até 4 threads ativos em execução (o que deve ser possível durante a maior parte do tempo de processamento deste aplicativo)?

Eu estou esperando que isso seja algo muito bobo que eu negligenciei.

Acabei de encontrar isso:https://issues.apache.org/jira/browse/MAPREDUCE-1367 Isso implementa o recurso que eu estava procurando no Hadoop 0.21. Apresenta o sinalizador mapreduce.local.map.tasks.maximum para controlá-lo.

Por enquanto, eu também encontrei a solução descritaaqui nesta pergunta.

questionAnswers(4)

yourAnswerToTheQuestion