Какое максимальное количество файлов разрешено в каталоге HDFS? - PullRequest
9 голосов
/ 15 июня 2011

Какое максимальное количество файлов и каталогов разрешено в каталоге HDFS (hadoop)?

Ответы [ 5 ]

10 голосов
/ 29 декабря 2015

В современных версиях Apache Hadoop различными ограничениями HDFS управляют свойства конфигурации с fs-limits в имени, все из которых имеют приемлемые значения по умолчанию. Этот вопрос специально задавался о количестве детей в каталоге. Это определяется dfs.namenode.fs-limits.max-directory-items, а его значением по умолчанию является 1048576.

Обратитесь к документации Apache Hadoop в hdfs-default.xml для получения полного списка fs-limits свойств конфигурации и их значений по умолчанию. Скопируйте сюда для удобства:

<property>
  <name>dfs.namenode.fs-limits.max-component-length</name>
  <value>255</value>
  <description>Defines the maximum number of bytes in UTF-8 encoding in each
      component of a path.  A value of 0 will disable the check.</description>
</property>

<property>
  <name>dfs.namenode.fs-limits.max-directory-items</name>
  <value>1048576</value>
  <description>Defines the maximum number of items that a directory may
      contain. Cannot set the property to a value less than 1 or more than
      6400000.</description>
</property>

<property>
  <name>dfs.namenode.fs-limits.min-block-size</name>
  <value>1048576</value>
  <description>Minimum block size in bytes, enforced by the Namenode at create
      time. This prevents the accidental creation of files with tiny block
      sizes (and thus many blocks), which can degrade
      performance.</description>
</property>

<property>
    <name>dfs.namenode.fs-limits.max-blocks-per-file</name>
    <value>1048576</value>
    <description>Maximum number of blocks per file, enforced by the Namenode on
        write. This prevents the creation of extremely large files which can
        degrade performance.</description>
</property>

<property>
  <name>dfs.namenode.fs-limits.max-xattrs-per-inode</name>
  <value>32</value>
  <description>
    Maximum number of extended attributes per inode.
  </description>
</property>

<property>
  <name>dfs.namenode.fs-limits.max-xattr-size</name>
  <value>16384</value>
  <description>
    The maximum combined size of the name and value of an extended attribute
    in bytes. It should be larger than 0, and less than or equal to maximum
    size hard limit which is 32768.
  </description>
</property>

Во всех этих настройках используются разумные значения по умолчанию, определенные сообществом Apache Hadoop. Обычно рекомендуется, чтобы пользователи не настраивали эти значения, за исключением очень необычных обстоятельств.

6 голосов
/ 15 июня 2011

С http://blog.cloudera.com/blog/2009/02/the-small-files-problem/:

Каждый файл, каталог и блок в HDFS представлен как объект в памяти наменода, каждый из которых, как правило, занимает 150 байтов. Таким образом, 10 миллионов файлов, каждый из которых использует блок, будут использовать около 3 гигабайт памяти. Масштабирование намного выше этого уровня является проблемой современного оборудования. Конечно, миллиард файлов невозможен.

4 голосов
/ 15 июня 2011

Блоки и файлы хранятся в HashMap.Таким образом, вы связаны с Integer.MAX_VALUE.Таким образом, каталог не имеет никаких ограничений, но вся файловая система.

1 голос
/ 06 февраля 2013

В этом вопросе конкретно упоминается HDFS, но связанный с этим вопрос заключается в том, сколько файлов вы можете хранить в кластере Hadoop.

Если вы используете файловую систему MapR, у вас будет другой ответ.В этом случае миллиарды файлов могут храниться в кластере без проблем.

0 голосов
/ 19 марта 2018

в HDFS, максимальная длина имени файла составляет 255 байтов.Итак, высказывание об одном файловом объекте, занимающем только 150 байт, не является правильным или точным.при вычислении байтов для памяти, мы должны взять максимальное занятие одного объекта.

...