Если мне нужно выполнить последовательное сканирование (нерасщепляемых) тысяч gzip файлов размером от 200 до 500 МБ, что такое размер блока для этих файлов?
Ради этого вопроса, скажем, что обработка выполнена очень быстро, поэтому перезагрузка картографа не является дорогостоящей даже для больших размеров блоков.
Мое понимание:
- Вряд ли есть верхний предел размера блока, так как там "много файлов" для соответствующего количества картографов для размера моего кластера.
- Чтобы обеспечить локальность данных, я хочу, чтобы каждый файл gzip находился в 1 блоке.
Однако файлы gzipped имеют разные размеры. Как хранятся данные, если я выбираю размер блока ~ 500 мб (например, максимальный размер файла для всех моих входных файлов)? Было бы лучше выбрать "очень большой" размер блока, например 2 ГБ? Является ли емкость жесткого диска чрезмерно избыточной в любом сценарии?
Наверное, я действительно спрашиваю, как файлы хранятся и разделяются по блокам hdfs, а также пытается понять оптимальную практику для нерасщепляемых файлов.
Обновление: конкретный пример
Скажем, что я запускаю MR Job на трех 200 МБ файлах, как показано на следующем рисунке.
Если HDFS хранит файлы, как в случае A, гарантировано, что 3 модуля будут обрабатывать "локальный" файл каждый. Однако, если файлы хранятся, как в случае B, одному картографу потребуется извлечь часть файла 2 из других данных node.
Учитывая наличие большого количества свободных блоков, файлы HDFS хранят, как показано в случае A или case B?