2017-04-01 7 views
1

HadoopのHDFSについて読んだところ、hadoopは小さなサイズのファイルが多数ではなく、より小さなサイズのファイルを処理するように設計されていることがわかりました。Hadoopに関するBigとSmallファイルのメタデータ

小さいサイズのファイルの数が多い場合、Namenode'sのメモリがすぐに奪われるという理由があります。私はこの議論を理解するのが難しいです。

1000年小さなファイルと128メガバイト(HDFSブロックの同じブロックサイズ)の各々がサイズ:

次のシナリオを検討してください。

これは、この情報を保持しているNamenodeのメモリに1000個のエントリがあることを意味します。 128メガバイト×1000ブロックサイズを持っている、

1つのBIGのファイル:

は今、次のシナリオを検討してください。

このBIGシングルファイルのNamenodeには1000個のエントリがありませんか?

この結論では、どちらの場合も、ファイルのブロック情報に関してネームノードのメモリ内のエントリの数が同じになることは間違っていますか?もしそうなら、hadoopは小規模なファイルの数よりも大きなサイズのファイルのほんの少数で効率的です。

これを理解するお手伝いができますか?

答えて

1

HDFS内のすべてのファイル、ディレクトリおよびブロックが〜150バイトを占め、それぞれが、 名前ノードのメモリにオブジェクトとして表現されます。

ケース1:

Number of Files = 1000 
Number of Blocks per file = 1 
Total Number of Blocks = 1000 (Number of Files * Number of Blocks per file) 
Total number of objects in Namenode's namespace = 2000 (Number of Files + Total Number of Blocks) 
Total Namenode Memory Used = 2000 * 150 bytes 

ケース2:両方の場合において

Number of Files = 1 
Number of Blocks per file = 1000 
Total Number of Blocks = 1000 (Number of Files * Number of Blocks per file) 
Total number of objects in Namenode's namespace = 1001 (Number of Files + Total Number of Blocks) 
Total Namenode Memory Used = 1001 * 150 bytes 

、データによって占有される合計サイズは同じままです。しかし、第1のシナリオでは、300KBの名前ノードのメモリが使用され、一方、第2のシナリオでは150.15KBのみが使用される。

+0

あなたの返信ありがとう、ソースは何ですか、それはいくつかの本ですか?同じ資料を参照できるように私に教えてもらえますか? – CuriousMind

+1

TomWhiteのClouderaブログ記事。 [link](http://blog.cloudera.com/blog/2009/02/the-small-files-problem/)を参照してください。 – franklinsijo

関連する問題