Разделить ввод на редуктор в hadoop

Этот вопрос отчасти связан с моим другим вопросом Hadoop обрабатывает перекос данных в редукторе . Тем не менее, я хотел бы спросить, есть ли какие-либо доступные настройки конфигурации, чтобы, скажем, максимальная память редуктора была достигнута, а затем создать новый редуктор на другом узле данных с оставшимися данными в контексте? Или, может быть, даже на том же узле данных, чтобы, скажем, некоторые записи x вне контекста считывались в методе сокращения до некоторого предела, а затем оставшиеся считывались в новом редюсере?


person sunny    schedule 17.09.2015    source источник


Ответы (3)


Вы можете попробовать объединитель, который уменьшит рабочую нагрузку на один редуктор, обрабатывающий больше пар ключ-значение, выполнив возможную агрегацию, прежде чем он попадет в редуктор. Если вы выполняете соединение, вы можете попробовать skewed join на Pig. Он включает в себя 2 задания MR. В первом MR он выполняет выборку на одном входе, и если он находит ключ, который настолько искажен, что он может поместиться в память, он разбивает этот ключ на несколько редукторов. Для других записей, кроме той, которая указана в образце, выполняется соединение по умолчанию. Для искаженного ввода он дублирует ввод и отправляет его обоим редукторам.

person Vignesh I    schedule 18.09.2015

Невозможно создать новый вспомогательный редуктор для балансировки нагрузки при выполнении задания.

Скорее вы могли бы выбрать другой ключевой элемент из ваших записей, который поможет перетасовывать данные даже между редьюсерами.

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

mapreduce.reduce.memory.mb

mapreduce.reduce.java.opts

mapreduce.reduce.merge.inmem.threshold

mapreduce.reduce.shuffle.input.buffer.percent

mapreduce.reduce.shuffle.merge.percent

mapreduce.reduce.input.buffer.percent

Насколько я помню, существовала расширенная библиотека mapreduce, skewtune, написанная для балансировки нагрузки при перекосе данных. в ходе выполнения задания. Но я никогда не экспериментировал с этим, пожалуйста, проверьте, полезно ли это.

person suresiva    schedule 18.09.2015

Это невозможно. Количество редукторов фиксируется в конфигурации драйвера.

person RojoSam    schedule 17.09.2015