hadoop-streaming: как уменьшить размер ввода, вычисляя задачу? и как это исправить?

Я вижу следующее в журнале jobtracker:

011-11-02 10:04:09,595 WARN org.apache.hadoop.mapred.JobInProgress: No room for reduce task. Node tracker_worker1:localhost/127.0.0.1:52295 has 62087933952 bytes free; but we expect reduce input to take 176511226508    
  • Я хочу знать, как компания Hadoop рассчитала, что входные данные редуктора принимают 176511226508.
  • У меня есть две небольшие рабочие ноды по 70 гигов каждая и один редюсер, как мне решить эту проблему? by increasing the number of reducers?

person daydreamer    schedule 02.11.2011    source источник
comment
продублировать в stackoverflow.com/questions/7982517/ и stackoverflow.com/questions/7962730/   -  person Thomas Jungblut    schedule 02.11.2011


Ответы (1)


Проверьте ссылку ResourceEstimator#getEstimatedReduceInputSize(). Как всегда, комментарии вокруг функции getEstimatedReduceInputSize немногочисленны. Нужно приложить некоторые усилия, чтобы понять это.

person Praveen Sripati    schedule 02.11.2011
comment
Хороший, но я не знаю, доступно ли это для потокового API Python. - person Thomas Jungblut; 03.11.2011
comment
@Thomas - Что ты имеешь в виду под доступным? Насколько мне известно, эта функция вызывается Hadoop перед запуском потоковых задач. - person Praveen Sripati; 03.11.2011
comment
Он не может вызвать его из python. Это класс Java. Но он может вычислить это с помощью калькулятора;) - person Thomas Jungblut; 03.11.2011