:リンクアドレスを参照してください
HDFSなぜ小さなファイルを大量に保存するのが得意ではない
https://blog.51cto.com/12445535/2354951
概要:名前ノードの複製(コピー)
コピー
デフォルトのブロック複製因子(dfs.replication)3。ディスク容量の影響をコピーしますが、メモリの消費量には影響を与えません。コピーは、各ブロックに必要なストレージの容量を変更しますが、ブロックの数は変更されません。(名前ノードのブロックによって表される)ファイルDataNodes内のブロックを3回、トリプルブロックへのファイルの数を複製しますが、されている場合は、それらはブロックの数を示すものではありません。
192メガバイトのファイルをコピーし、閉じたときのディスク容量の192メガバイトとメモリの約450バイトを占有します。
//(のように計算:iノード+ 2つのブロックファイルで+ 64 128は、メモリの約450バイトを消費)
あなたは百万ような文書を持っている場合、またはデータの192 TBに、あなたは192 TBに必要かかわらず、RPCワークロードのディスク容量、メモリの450メガバイト(1百万個のブロックのinode + 200)150バイト。レプリケーションがデフォルトで有効にされたら、ディスク容量の576 TBする必要があります(192 TB 3)が、メモリ使用量は同じ、450メガバイトのまま。あなたは簿記やRPCを考慮し、1ギガバイトのヒープメモリの百万ブロックあたりの推奨事項に従った場合、このプログラムは、2ギガバイトのメモリ(と、コピーせずに)、より安全であると推定されます。
実施例
実施例1:推定ヒープメモリ名前ノードを使用して
これは、ディスクごとアリス、ボブとカール上のデータの1ギガバイト(1024 MB)を持っていますが、異なるサイズの原稿にカット。アリス及びボブは、ファイルブロックサイズの一部であり、それはメモリの最小値を必要とします。カールは、不必要な名前空間オブジェクトのヒープで満たされていません。
アリス:1×1024 MBのファイル
ファイルのinode
。8ブロック(1024 MB / 128メガバイト)
合計= 9つのオブジェクト* 150バイト=ヒープメモリの1,350バイト
ボブ:8×128 MBのファイル
8 inodeファイルに
8つのブロック
合計= 16×150バイトは、ヒープメモリの= 2,400バイトオブジェクト
1024×1 MBのファイル:カール
1024個のファイルのinode
1024個のブロック
合計= 2048のオブジェクト* 150バイト=ヒープメモリの307,200バイト
例// **知られているヒープの名前ノードに応じてディスクのサイズを計算するために使用することができますどのくらい生産計算
例2:推定名前ノードのヒープメモリが必要**
この例では、考慮にメモリの容量を取ることによって、クラスタを推定します。値は四捨五入。二つのクラスタは、物理ストレージ4800 TBまたは約3600万ブロックファイル(デフォルトのブロックサイズ)です。ブロックファイルを表してどのように多くのブロックを決定するために名前空間をコピーします。
クラスタA:各ホスト200 24 TB = 4800 TB。
ブロックサイズ= 128 MBは、1 =コピー
MB容量クラスタ単位:200である24,000,00048億= MB MB(TB 4800)
必要なディスクスペースの各ブロックについて:各128メガバイト毎の1 = 128 MBメモリ空間
ブロッククラスタ容量:48億メガバイト/ 128メガバイト= 36,000,000ブロック
能力の点で、RAMの100万GB、クラスタAの36ギガバイト当たりのアロケーションブロックを推奨最大ヒープスペースを必要とします。
クラスタB:各ホスト24 TB = 4800 TB 200。
ブロックサイズ= 128 MB、複写= 3
MBにおける容量のクラスタ:200である24,000,00048億= MB MB(TB 4800)
必要なディスクスペースのブロック毎に128 MB各それぞれの3 = 384メガバイトのメモリ空間
ブロッククラスタ容量:48億メガバイト/ 384メガバイト= 12,000,000ブロック
容量の面では、我々が推奨して万人あたりのメモリブロックの1 GB、クラスタBは12ギガバイト最大ヒープ領域が必要です。
クラスタAとクラスタBはファイルブロックの同じ数を格納します。クラスタBに、3分の1のみの三分の二がコピーであるが、クラスタAに、各ブロックは、名前ノード上のブロックによって表されるファイルのみです。