0

50mb のファイルがあり、デフォルトの HDFS ブロック サイズが 64mb であるとします。したがって、この 50 MB のファイルを保存した後、他のファイルを保存するために使用できる 14 MB のブロック サイズが残ります。namenode は、HDFS に存在するファイルのブロック情報を追跡します。したがって、この場合、同じブロックを指す 2 つのレコードがあり、1 つは 50 MB ファイル用で、もう 1 つは 14 MB ファイル用です。

私の質問は、namenode がこれら 2 つのレコードを追跡し、2 つのファイルが同じブロックを指しているため、ファイルに関するメタデータ情報を提供する方法です。

4

2 に答える 2

1

ブロックごとに複数のファイルがあるという仮定は間違っています。1 つのブロックには 1 つのファイルしか格納できませんが、1 つのファイルを複数のブロックに格納できます (サイズがブロックのサイズよりも大きい場合)。そのため、Namenode はブロックごとに最大で 1 つのファイルのみをマップします。

ディスク容量は実際のファイル サイズにのみ使用され、ブロック サイズ全体には使用されないことに注意してください。そのため、小さなファイルが多数あると Namenode のメモリに影響を与える可能性があります。

于 2016-07-12T19:16:08.607 に答える
0

最初のファイルはブロックサイズに従って保存されず、入力分割に従って保存されます。ファイルは入力分割と呼ばれる小さな部分に論理的に分割され、これらはブロックに保存されます。

次に、ブロックごとに複数のファイルが存在する可能性があります。これは、ブロックに複数の入力分割が存在する場合があることを意味します。これらの分割には EOL ( end of line ) と呼ばれるものがあり、アプリケーション マスターが分割を追跡し、名前ノードを更新するのに役立ちます。

詳細については、https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/を参照してください 。

于 2016-07-12T21:59:41.867 に答える