2012-08-22 19 views
8

Sto tentando di abilitare l'input errato saltando sui miei lavori Amazon Elastic MapReduce. Sto seguendo la meravigliosa ricetta descritto qui:Impostazione parametri hadoop con boto?

http://devblog.factual.com/practical-hadoop-streaming-dealing-with-brittle-code

Il link qui sopra dice che ho bisogno di impostare in qualche modo i seguenti parametri di configurazione su un lavoro EMR:

mapred.skip.mode.enabled=true 
mapred.skip.map.max.skip.records=1 
mapred.skip.attempts.to.start.skipping=2 
mapred.map.tasks=1000 
mapred.map.max.attempts=10 

Come faccio a impostare questi (e altri) parametri mapred.XXX su un JobFlow usando Boto?

risposta

14

Dopo molte ore di lotta, la lettura del codice, e la sperimentazione, ecco la risposta:

È necessario aggiungere un nuovo BootstrapAction, in questo modo:

params = ['-s','mapred.skip.mode.enabled=true', 
      '-s', 'mapred.skip.map.max.skip.records=1', 
      '-s', 'mapred.skip.attempts.to.start.skipping=2', 
      '-s', 'mapred.map.max.attempts=5', 
      '-s', 'mapred.task.timeout=100000'] 
config_bootstrapper = BootstrapAction('Enable skip mode', 's3://elasticmapreduce/bootstrap-actions/configure-hadoop', params) 

conn = EmrConnection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 
step = StreamingStep(name='My Step', ...) 
conn.run_jobflow(..., bootstrap_actions=[config_bootstrapper], steps=[step], ...) 

Naturalmente, se si dispone di più di una azione di bootstrap, dovresti semplicemente aggiungerla alla matrice bootstrap_actions.

+0

Grazie! Questo ha funzionato per me. Funziona a volte quando si specificano gli stessi parametri con ['-D', '...'] per lo stesso set di valori con un "passo" anziché come un bootstrap, ma l'aggiunta di questo passo bootstrap sembra rendere questo proiettile prova. – Suman