2016-07-12 5 views
0

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

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

答えて

1

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

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

0

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

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

詳細はhttps://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/ を参照してください。これですべての疑念が解消されます。

関連する問題