2013-03-28 5 views
2

Предполагая, что размер блока составляет 128 МБ, кластер имеет 10 ГБ (примерно 80 доступных блоков). Предположим, что я создал 10 небольших файлов, которые вместе берут 128 МБ на диске (файлы блоков, контрольные суммы, репликация ...) и 10 блоков HDFS. Если я хочу добавить еще один небольшой файл в HDFS, то, что использует HDFS, используемые блоки или фактическое использование диска, для вычисления доступных блоков?Как HDFS вычисляет доступные блоки?

80 блоков - 10 блоков = 70 доступных блоков или (10 ГБ - 128 МБ)/128 МБ = 79 доступных блоков?

Спасибо.

ответ

4

Размер блока - это всего лишь указание на HDFS, как разделить и распределить файлы по всему кластеру - в HDFS нет физически зарезервированного количества блоков (вы можете изменить размер блока для каждого отдельного файла, если хотите)

Для вашего примера вам также необходимо учитывать фактор репликации и файлы контрольной суммы, но, по сути, добавление большого количества небольших файлов (меньше размера блока) не означает, что вы потратили впустую «доступные блоки» - они принимают так что вам нужно помнить, что репликация увеличит объем физических данных, необходимый для хранения файла), а количество доступных блоков будет ближе к вашему второму расчету.

Заключительное примечание - наличие большого количества мелких файлов означает, что вашему узлу имени потребуется больше памяти для их отслеживания (размеры блоков, местоположения и т. Д.), А его вообще менее эффективно обрабатывать файлы размером 128x1 МБ, чем один 128 МБ-файл (хотя это зависит о том, как вы его обрабатываете)

+0

Да. Спасибо Крису! Таким образом, размер блока является (логическим) блоком распределения, правильно? Скажем, что оставшееся место на диске составляет 250 МБ (<2 блока), мы не можем добавить 200 МБ-файл (требуется 2 блока с репликацией = 1). –

+0

с остатком 250 МБ, вы можете добавить файл размером 200 МБ с размером блока 128 МБ - вы получите только один блок из 128 МБ, а еще один блок из 72 МБ (коэффициент репликации 1) –

Смежные вопросы