Управление блоками Namenode

Предположим, у меня есть файл размером 50 МБ, а размер блока HDFS по умолчанию — 64 МБ. Таким образом, после сохранения этого файла размером 50 МБ у нас остается размер блока 14 МБ, который можно использовать для хранения какого-либо другого файла. Теперь namenode отслеживает информацию о блоках файлов, присутствующих в HDFS. Таким образом, в этом случае будет 2 записи, указывающие на один и тот же блок, одна для файла размером 50 МБ, а другая для файла размером 14 МБ.

Мой вопрос заключается в том, как namenode отслеживает эти 2 записи и предоставляет метаданные о файлах, поскольку 2 файла будут указывать на один и тот же блок.


person Rahul Mukherjee    schedule 12.07.2016    source источник


Ответы (2)


Вы ошибаетесь с предположением о наличии нескольких файлов в блоке. В одном блоке может храниться только один файл, но один файл может храниться в нескольких блоках (если его размер больше, чем размер блока). Таким образом, Namenode будет отображать не более одного файла на блок.

Обратите внимание, что дисковое пространство будет использоваться только для фактического размера файла, а не для всего размера блока, поэтому наличие большого количества небольших файлов может повлиять на память Namenode.

person Serhiy    schedule 12.07.2016

Первый файл не сохраняется в соответствии с размером блока, он сохраняется в соответствии с разделением ввода. Файл логически делится на более мелкие части, называемые входными разбиениями, после чего они сохраняются в блоке.

Во-вторых, да, в блоке может быть более 1 файла, что просто означает, что может быть случай, когда в блоке присутствует более 1 входного разделения. Эти разбиения имеют что-то, называемое EOL (конец строки), которое помогает главному приложению отслеживать их, что, в свою очередь, обновляет узел имени.

Для получения дополнительной информации см. https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/ Это рассеет все ваши сомнения.

person siddhartha jain    schedule 12.07.2016