HDFS目录中允许的最大文件数量是多少?

问题描述

| HDFS(hadoop)目录中允许的文件和目录的最大数量是多少?     

解决方法

        块和文件存储在HashMap中。因此,您必须绑定到Integer.MAX_VALUE。 因此,目录没有任何限制,而是整个FileSystem。     ,        在现代Apache Hadoop版本中,各种HDFS限制由名称中带有“ 0”的配置属性控制,所有这些属性均具有合理的默认值。此问题专门询问目录中的子级数。由
dfs.namenode.fs-limits.max-directory-items
定义,默认值为
1048576
。 有关“ 0”配置属性及其默认值的完整列表,请参考hdfs-default.xml中的Apache Hadoop文档。为方便复制,请在此处粘贴:
<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社区确定的合理默认值。通常建议用户不要调整这些值,除非在非常特殊的情况下。     ,        从http://blog.cloudera.com/blog/2009/02/the-small-files-problem/: 根据经验,HDFS中的每个文件,目录和块都表示为namenode内存中的一个对象,每个对象占用150个字节。因此,每个使用一个块的1000万个文件将占用大约3 GB的内存。当前硬件的扩展问题远远超出此级别。当然,十亿个文件是不可行的。     ,        这个问题专门提到HDFS,但是一个相关的问题是,您可以在Hadoop群集上存储多少文件。 如果您使用MapR的文件系统,则答案会有所不同。在这种情况下,数十亿个文件可以毫无问题地存储在群集中。     ,        在HDFS中,最大文件名长度为255个字节。因此,关于一个文件对象仅占用150个字节的说法是不正确或不正确的。在计算内存字节时,我们应该最大占用一个对象。