Если мы используем 64 МБ размера блока, тогда данные будут загружены только в два блока (64 МБ и 16 МБ). Поэтому размер метаданных уменьшается.
Edit:
Платформа Hadoop разделяет большой файл на блоки (64 МБ или 128 МБ) и сохраняет их в подчиненных узлах. HDFS не знает о содержимом блока. При записи данных в блок может случиться так, что запись пересекает предел блока, и часть одной записи записывается в один блок, а другая записывается в другой блок.
Таким образом, способ, которым Hadoop отслеживает это разделение данных, заключается в логическом представлении данных, известных как входное разделение. Когда клиент Map Reduce вычисляет входные разбиения, он фактически проверяет, находится ли вся запись в одном и том же блоке или нет. Если запись по заголовкам и какая-то ее часть записана в другой блок, разделение ввода захватывает информацию о местоположении следующего блока и смещение в байтах данных, необходимых для завершения записи. Обычно это происходит в многострочной записи, поскольку Hadoop достаточно умен, чтобы справиться со сценарием однострочной записи.
Обычно разделение на входы настраивается так же, как размер блока, но учитывайте, превышает ли разделение на входе размер блока. Разделение ввода представляет размер данных, которые будут помещены в один маппер. Рассмотрим пример ниже
• Разделение входа = 256 МБ
• Размер блока = 128 МБ
Затем mapper обработает два блока, которые могут быть на разных машинах. Что означает, что для обработки блока картограф должен будет передавать данные между машинами для обработки. Следовательно, чтобы избежать ненужного перемещения данных (локальность данных), мы обычно сохраняем то же разделение входных данных, что и размер блока.