10

HDFS (hadoop) ディレクトリで許可されるファイルとディレクトリの最大数はいくつですか?

4

5 に答える 5

13

最新の Apache Hadoop バージョンでは、さまざまな HDFS の制限がfs-limits、名前に含まれる構成プロパティによって制御され、すべて適切なデフォルト値が設定されています。この質問は、ディレクトリ内の子の数について具体的に尋ねました。これは によって定義されdfs.namenode.fs-limits.max-directory-items、そのデフォルト値は1048576です。

構成プロパティとそのデフォルト値の完全なリストについては、 hdfs-default.xmlの Apache Hadoop ドキュメントを参照してください。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 コミュニティによって決定された妥当なデフォルト値を使用します。一般に、非常に特殊な状況を除き、これらの値を調整しないことをお勧めします。

于 2015-12-29T18:32:11.020 に答える
6

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

HDFS内のすべてのファイル、ディレクトリ、およびブロックは、経験則として、ネームノードのメモリ内のオブジェクトとして表され、それぞれが150バイトを占有します。したがって、それぞれがブロックを使用する1,000万個のファイルは、約3ギガバイトのメモリを使用します。このレベルをはるかに超えてスケ​​ールアップすることは、現在のハードウェアの問題です。確かに、10億のファイルは実行可能ではありません。

于 2011-06-15T15:29:30.043 に答える
4

ブロックとファイルは HashMap に格納されます。したがって、Integer.MAX_VALUE にバインドされます。したがって、ディレクトリには制限がありませんが、ファイルシステム全体に制限があります。

于 2011-06-15T15:38:30.313 に答える
1

この質問は特に HDFS に言及していますが、関連する質問は、Hadoop クラスターに保存できるファイルの数です。

MapR のファイル システムを使用する場合は、別の答えになります。その場合、数十億のファイルを問題なくクラスターに格納できます。

于 2013-02-05T22:06:57.740 に答える