2012-08-22 30 views
8

Tôi đang cố gắng cho phép bỏ qua đầu vào xấu trên các công việc của Amazon Elastic MapReduce. Tôi sau đây công thức tuyệt vời mô tả ở đây:Thiết lập thông số hadoop với boto?

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

Liên kết ở trên nói rằng tôi cần phải bằng cách nào đó thiết lập các thông số cấu hình sau đây về một công việc 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 

Làm thế nào để thiết lập các (và khác) các tham số maped.XXX trên JobFlow bằng Boto?

Trả lời

14

Sau nhiều giờ đấu tranh, đọc mã, và thử nghiệm, đây là câu trả lời:

Bạn cần phải thêm một BootstrapAction mới, như vậy:

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], ...) 

Tất nhiên, nếu bạn có nhiều hơn một hành động bootstrap, bạn chỉ cần thêm nó vào mảng bootstrap_actions.

+0

Cảm ơn! Điều đó làm việc cho tôi. Đôi khi nó hoạt động khi tôi chỉ định cùng một tham số với ['-D', '...'] cho cùng một tập hợp các giá trị với một "bước" thay vì là một bootstrap, nhưng việc thêm bước khởi động này dường như làm cho dấu đầu dòng này bằng chứng. – Suman

Các vấn đề liên quan