Hadoop обрабатывает перекос данных в редукторе

Я пытаюсь определить, есть ли определенные ловушки, доступные в api hadoop (hadoop 2.0.0 mrv1) для обработки перекоса данных для редуктора. Сценарий: наличие собственного составного ключа и разделителя для маршрутизации данных в редукторы. Чтобы иметь дело с нечетным случаем, но очень вероятным случаем миллиона ключей и больших значений, заканчивающихся на одном и том же редукторе, нужна какая-то эвристика, чтобы эти данные могли быть далее разделены для появления новых редукторов. Подумываю о двухступенчатом процессе

  1. установите mapred.max.reduce.failures.percent, чтобы сказать 10%, и дайте работе завершиться
  2. повторно запустите задание на сбойном наборе данных, передав конфигурацию через драйвер, который заставит мой разделитель случайным образом разделить искаженные данные. Разделитель будет реализовывать настраиваемый интерфейс.

Есть ли лучший способ / другой способ?

Возможное встречное решение может заключаться в том, чтобы записать выходные данные картографов и выделить другое задание карты, выполняющее работу редуктора, но не желающее оказывать давление на наменоде.

2 ответа

Эта идея приходит мне в голову, я не уверен, насколько она хороша.

Допустим, вы в настоящий момент запускаете задание с 10 сопоставителями, что не удается из-за асимметрии данных. Идея заключается в том, что вы устанавливаете число редукторов на 15, а также определяете, какое максимальное число (ключ, значение) должно идти на один редуктор от каждого преобразователя. Вы храните эту информацию в хэш-карте в своем пользовательском классе секционера. Как только конкретный редуктор достигает предела, вы начинаете отправлять следующий набор пар (ключ, значение) в другой редуктор из дополнительных 5 редукторов, которые мы сохранили для обработки асимметрии.

Если вы обрабатываете разрешение, то вам может помочь использование Combiner (функция типа Reduce). Если вы предварительно агрегируете данные на стороне Mapper. Затем, даже если все ваши данные заканчиваются одним и тем же редуктором, объем данных может быть управляемым.

Альтернативой может быть переопределение разделителя, чтобы избежать перекоса.

Другие вопросы по тегам