Количество входных разбиений равно количеству картографов?
Я обрабатываю один файл с картой, уменьшив этот размер файла до 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 . Так что no of mappers = 16. По умолчанию мы получим только один Редуктор, если мы хотим запустить больше редукторов, вы можете установить job.setNumReduceTasks();