Количество входных разбиений равно количеству картографов?

Я обрабатываю один файл с картой, уменьшив этот размер файла до 1 ГБ, а размер моего блока по умолчанию в HDFS составляет 64 МБ, так что для этого примера, сколько разделений ввода и сколько картографов?

2 ответа

Number of splits=Number of mappers.

Поэтому, если ваш размер файла составляет 1 ГБ (1024/64), у вас будет запущено 16 картографов.

Ваш входной сплит отличается от размера блока. Блок - это физическое представление, которое содержит фактические данные, но входное разделение - это просто логическое представление, которое просто содержит длину разделения и местоположение разделения.

Однако количество картографов также зависит от различных факторов.

  1. Если ваш файл сжат, что, в свою очередь, не является форматом, пригодным для разделения, то в итоге вы получите один маппер, обрабатывающий весь файл.
  2. Если issplittable() в классе Inputformat установлено значение false, тогда ваш файл не разделяемый, и тогда у вас также будет работать один маппер.
  3. Редукторы должны быть установлены явно в коде драйвера. job.setNumReduceTasks() сделаю это. Если не установлено, то число редукторов будет равно 1 по умолчанию.

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

Нет блоков = Нет картостроителей; Если единственный файл с размером 1 ГБ и размером блока 64 МБ, то ни один из блоков (блоков) => 1026 МБ /64 МБ = 16 . Так что no of mappers = 16. По умолчанию мы получим только один Редуктор, если мы хотим запустить больше редукторов, вы можете установить job.setNumReduceTasks();

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