Wordcount: более 1 задачи карты на блок, с отключенным спекулятивным выполнением
В Wordcount кажется, что вы можете получить более 1 задачи карты на блок, с отключенным спекулятивным выполнением.
Делает ли Jobtracker какую-то магию под капотом, чтобы распределить задачи больше, чем предусмотрено InputSplits?
2 ответа
Блоки и сплиты - это две разные вещи. Вы можете получить более одного сопоставителя для одного блока, если в этом блоке более одного разделения.
Ответ заключается в том, как работают форматы ввода Hadoop:
В HDFS:
Давайте рассмотрим пример, когда блоки имеют размер 1 МБ, входной файл для HDFS имеет размер 10 МБ, а минимальный размер разделения составляет> 1 МБ.
1) Сначала файл добавляется в HDFS.
2) Файл разбит на 10 блоков, каждый размером 1 МБ.
3) Затем каждый блок размером 1 МБ считывается входным разделителем.
4) Поскольку блок размером 1 МБ меньше, чем MIN_SPLIT_SIZE, HDFS обрабатывает 1 МБ за раз без дополнительного разделения.
Мораль этой истории: FileInputFormat на самом деле сделает дополнительное разделение для вас, если ваши разделения меньше минимального размера разделения.
Я думаю, что я полностью забыл об этом, но, оглядываясь назад, это была особенность Hadoop с самого начала. Способность входного формата произвольно разделять блоки во время выполнения используется многими экосистемными инструментами для распределения нагрузок в зависимости от конкретного приложения.
Сложность здесь заключается в том, что в заданиях на игрушечное отображение ожидаются по одному блоку на разделение во всех случаях, а затем в реальных кластерах мы пропускаем параметры размера разделения по умолчанию, которые не вступают в игру, если вы не используете большие файлы.,