Я обрабатываю один файл с картой, уменьшая этот размер файла до 1 ГБ, а размер блока по умолчанию в HDFS составляет 64 МБ, поэтому для этого примера, сколько входных разбиений и сколько картографов?
Количество входных разбиений равно количеству картографов?
Ответы (2)
Number of splits=Number of mappers.
Таким образом, если размер вашего файла составляет 1 ГБ (1024/64), у вас будет запущено 16 картографов.
Разделение ввода отличается от размера блока. Блок — это физическое представление, которое содержит фактические данные, но входное разделение — это просто логическое представление, которое содержит только длину разделения и местоположение разделения.
Однако количество картографов также зависит от различных факторов.
- Если ваш файл сжат, что, в свою очередь, не является разделяемым форматом, то вы получите один преобразователь, обрабатывающий весь файл.
- Если для
issplittable()
в классе Inputformat установлено значение false, ваш файл нельзя разделить, и тогда у вас также будет работать один преобразователь. - Редюсеры должны быть явно установлены в коде драйвера.
job.setNumReduceTasks()
сделает это. Если не установлено, то количество редукторов по умолчанию будет равно 1.
Я думаю, что количество входных разбиений зависит от размера входного файла.
Количество блоков = НЕТ картографов; Если только один файл имеет размер 1 ГБ и размер блока 64 МБ, количество фрагментов (блоков) => 1026 МБ/64 МБ = 16 . Таким образом, количество картографов = 16. По умолчанию мы получим только один редьюсер, если мы хотим запустить больше редюсеров, вы можете установить job.setNumReduceTasks();