Hadoop The Definitive Guide, стр. 203 "Максимальный размер разделения по умолчанию равен максимальному значению, которое может быть представлено длинным типом Java. Он действует только тогда, когда он меньше размера блока, заставляет разбиение на быть меньше, чем блок .
Размер сплита рассчитывается по формуле:
max(minimumSize, min(maximumSize, blockSize))
по умолчанию
minimumSize < blockSize < maximumSize
, поэтому размер разделения составляет blockSize
Например,
Minimum Split Size 1
Maximum Split Size 32mb
Block Size 64mb
Split Size 32mb
Hadoop Работает лучше с небольшим количеством больших файлов, чем с большим количеством маленьких файлов. Одна из причин этого заключается в том, что FileInputFormat генерирует разбиения таким образом, что каждое разбиение является всем или частью одного файла. Если файл очень маленький («маленький» означает значительно меньше, чем блок HDFS) и их много, то каждая задача карты будет обрабатывать очень мало входных данных, и их будет много (по одному на файл), каждый из которых накладывает дополнительные накладные расходы на бухгалтерию. Сравните файл размером 1 ГБ, разбитый на шестнадцать блоков по 64 МБ, и около 10000 файлов по 10000 КБ. 10.000 файлов используют одну карту каждый, и время выполнения задания может быть в десятки или сотни раз медленнее, чем эквивалентное с одним входным файлом и 16 задачами отображения.