Что происходит, когда я устанавливаю размер разделения больше, чем фактический размер блока в структуре mapreduce?

Насколько мне известно, на один сплит будет выделен один маппер.

Но что произойдет, если я установлю размер разделения больше, чем фактический размер блока?

Например: если я укажу размер блока = 128 МБ и размер разделения = 130 МБ, в этом случае сколько картографов будет запущено. Это один маппер или более одного маппера?


person rajesh mallela    schedule 03.04.2017    source источник


Ответы (2)


Если InputSplit превышает размер блока HDFS, сопоставитель в конечном итоге считывает данные из нескольких блоков.
В вашем примере, если размер блока = 128 МБ и расчетный размер разделения = 130 МБ, будет создана одна задача сопоставления, которая будет считывать данные из двух разных блоков.

То, как именно читаются эти два блока, определяется уровнем HDFS.

person Avinash Ganta    schedule 15.06.2018

Можно установить размер разделения больше, чем размер блока. Но в этом случае для получения одного сплит-маппера необходимо прочитать несколько блоков из hdfs, что может вызвать передачу по сети, т.к. блок n и блок n+1 могут находиться не в одном датаноде.

В вашем примере, если вы установите splitsize=130 МБ и ваши входные данные представляют собой один файл размером 130 МБ, тогда у вас будет 1 маппер.

person fi11er    schedule 03.04.2017
comment
Таким образом, в этом случае один преобразователь будет читать только первые 128 МБ данных и снова будет читать оставшиеся 2 МБ данных. или же он будет читать все 130 МБ данных за раз? - person rajesh mallela; 05.04.2017
comment
что ты имеешь в виду под "одновременно"? - person fi11er; 05.04.2017
comment
я имею в виду одновременно. - person rajesh mallela; 06.04.2017