2011-09-19 7 views
5

Sto provando a impostare il numero di attività della mappa da eseguire in ambiente hadoop 0.20.Come impostare il numero di attività della mappa in hadoop 0.20?

Sto usando la vecchia api.

Qui ci sono le opzioni che ho provato finora:

conf.set("mapred.tasktracker.map.tasks.maximum", "5"); 
    conf.set("mapred.map.tasks", "10"); 
    conf.set("mapred.map.tasksperslot", "5"); 
    conf.set("mapred.tasktracker.map", "5"); 
    conf.set("mapred.map.parallel.copies", "5"); 

con tutte quelle in poi, il numero di attività mappa in esecuzione parallelamente rimane 2.

Quali sono le opzioni corrette per impostare a ottenere il numero di mapper in parallelo fino a 5?

risposta

9

Nelle TaskTracker.java

maxCurrentMapTasks = conf.getInt ("mapred.tasktracker.map.tasks.maximum", 2);

Secondo lo "Hadoop : The Definitive Guide". Quindi, l'impostazione della proprietà sul lato client non è utile. È necessario impostare lo stesso nel file di configurazione.

Tenere presente che alcune proprietà non hanno alcun effetto quando sono impostate nella configurazione del client. Per esempio , se nell'invio del tuo lavoro hai impostato mapred.tasktracker.map.tasks.maximum con l'aspettativa che cambierebbe il numero di task slot per i tasktrackers che eseguono il tuo lavoro, allora saresti deluso, dal momento che questa proprietà solo è onorato solo se impostato nel file mapred-site.html del tasktracker. In generale, è possibile indicare al componente dove deve essere impostata una proprietà in base al nome, quindi il fatto che mapred.task.tracker.map.tasks.maximum inizi con mapred.tasktracker ti dà la certezza che è possibile impostare solo per il demone di tasktracker. Questa non è una regola dura e veloce, tuttavia, in alcuni casi potrebbe essere necessario ricorrere a tentativi ed errori, o anche a leggere la fonte, in .

+0

Sareste in grado di fornire uno script di configurazione corretto per EMR? –

+0

cosa intendi con uno script di configurazione per EMR? Hai bisogno di maggiori dettagli. –

+1

all'avvio del lavoro Elastic Mapreduce, esiste la possibilità di eseguire le azioni Bootstrap prima dell'avvio di hadoop. Credo che questo possa essere usato per impostare il numero di mapper, ma io so dove –

0

Per mantenere risposta up-to-date con i cambiamenti nella Hadoop API, ho elencato nuove sostituzioni per le proprietà deprecate.

mapred.tasktracker.map.tasks.maximum => mapreduce.tasktracker.map.tasks.maximum 
mapred.map.tasks => mapreduce.job.maps 

Date un'occhiata a questo link per API deprecato & nuova API

ma preferisco mantenere il numero di decisione mappa compiti da framework stesso per migliorare le prestazioni di lavoro.

Problemi correlati