NameNodeプロセスはJava Virtual Machine(JVM)で実行され、NameNodeで作成されたJavaオブジェクトはJava Virtual Memory(JVM)によって管理されます。ファイルまたはディレクトリが作成されると、ヒープメモリに inode オブジェクトとブロックオブジェクトが作成されます。
名前空間で管理されるJavaオブジェクトのサイズは150バイトに近い。当初はオブジェクトサイズが小さいので、かなりの量のオブジェクトをファイルシステムに保存することができました。
それでは、namnodeヒープのサイズを変更するとしましょう。
ネームノードヒープのサイズ変更は、HDFSのファイル数に基づいている必要があります。
リンクで定義されたヒープサイズとファイル数を表すテーブル -https://medium.com/@iacomini.riccardo/hadoop-namenode-garbage-collector-tuning-7f6a029e9012
ここで、HDFSに1,000,000個のファイルがあるとします。
テーブル名によると、ノードヒープは3379Mでなければなりません。
ただし、HDFSにはレプリケーション要素があります。実際にレプリケーション要素が3の場合、3000000個のファイルがあります。
それでは、ネームノードヒープサイズをキャプチャするためにレプリケーション要素を考慮する必要がありますか?
それとも3000000個のファイルに基づいてネームノードヒープを見つける必要がありますか?