Учитывает ли податель задания hadoop при расчете разбиений границы записей?

Этот вопрос НЕ является дубликатом: как записи процесса Hadoop разделяются по границам блоков?

У меня есть один вопрос, касающийся расчета входного сплита. Согласно руководству Hadoop

1) InputSplits уважают границы записи

2) В то же время говорится, что сплиты рассчитываются подателем вакансии. Который я предполагаю работает на стороне клиента. [Анатомия выполнения задания MapReduce - Classic MRv1]

Означает ли это, что:

(а) податель задания читает блоки для вычисления входных разбиений? Если это так, то это не будет очень неэффективно и превзойдет саму цель hadoop.

Или же

(b) Рассматривает ли податель задания только расщепления, которые являются просто оценкой, основанной на размерах и местоположении блоков, и затем он становится ответственным за InputFormat и RecordReader, выполняемый под маппером, для получения записей через границу хоста.

Спасибо

1 ответ

Решение

(а) податель задания читает блоки для вычисления входных разбиений? Если это так, то это не будет очень неэффективно и превзойдет саму цель hadoop.

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

(b) Рассматривает ли податель задания только расщепления, которые являются просто оценкой, основанной на размерах и местоположении блоков, и затем он становится ответственным за InputFormat и RecordReader, выполняемый под маппером, для получения записей через границу хоста.

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

max(минимум SplitSize, min(максимум SplitSize, blockSize))

все эти значения могут быть установлены пользователями. Например, минимальный размер разделения может быть 1, а максимальное значение может быть максимальным длинным значением (9223372036854775807).

правильно - записи в InputFormat - это логическая концепция. Это означает, что как разработчики, когда мы разрабатываем код сокращения кода, нам не нужно рассматривать случай, когда запись разделена на 2 разных разбиения. Читатель записи отвечает за чтение недостающей информации через удаленное чтение. Это может вызвать некоторые накладные расходы, но обычно оно незначительное.

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