Python: увеличение значения тайм-аута в EMR с использованием лепестков MRJOB

Я использую yelp MRjob для написания некоторых программ mapreduce. Я запускаю его на EMR. Моя программа имеет код редуктора, который занимает много времени. Я замечаю, что из-за периода ожидания по умолчанию в EMR я получаю эту ошибку

Task attempt_201301171501_0001_r_000000_0 failed to report status for 600 seconds.Killing! 

Я хочу, чтобы увеличить тайм-аут EMR. Я прочитал официальную документацию mrjobs о том же, но я не смог понять процедуру. Может кто-нибудь предложить способ решить эту проблему.

One Solution collect form web for “Python: увеличение значения тайм-аута в EMR с использованием лепестков MRJOB”

В прошлом я рассматривал аналогичную проблему с EMR, свойство, которое вы ищете mapred.task.timeout которое соответствует количеству миллисекунд до того, как задача будет прекращена, если она не будет mapred.task.timeout ввод, не записывать вывод, ни обновляет строку состояния .

С помощью MRJob вы можете добавить следующий вариант:

 --jobconf mapred.task.timeout=1800000 

EDIT : Похоже, что некоторые AMI AMI появляются, не поддерживают параметры настройки, такие как timeout with jobconf во время выполнения. Вместо этого вы должны использовать конфигурацию Bootstrap-time следующим образом:

 --bootstrap-action="s3://elasticmapreduce/bootstrap-actions/configure-hadoop -m mapred.task.timeout=1800000" 

Я бы все же попробовал первый, с чего начать, и посмотрим, сможете ли вы заставить его работать, иначе попробуйте выполнить загрузку.

Чтобы запустить любой из этих параметров, просто создайте свою работу, начиная с MRJob , этот класс имеет метод jobconf который будет читать ваши параметры --jobconf , поэтому вы должны указать их как обычные параметры в командной строке:

 python job.py --num-ec2-instances 42 --python-archive t.tar.gz -r emr --jobconf mapred.task.timeout=1800000 /path/to/input.txt 
Python - лучший язык программирования в мире.