NameNode および DataNode の JVM メモリを調整して、HDFS の安定性を向上させます。
NameNode JVM メモリの調整
-
背景情報: HDFS では、NameNode がファイルのメタデータを保存しており、これによりメモリを消費します。デフォルトの JVM 構成は一般的な HDFS ワークロードに対応できますが、ファイル数が非常に多い、または継続的に増加しているワークロードの場合、デフォルトのメモリ容量を超える可能性があります。このような場合は、割り当てられた JVM メモリを増やす必要があります。
-
推奨事項: NameNode JVM メモリサイズを以下のように調整してください。
-
HA クラスターの場合
EMR コンソールで、HDFS サービスの Configure ページに移動します。hadoop_namenode_heapsize パラメーターを検索し、必要に応じてその値を設定します。
-
非 HA クラスターの場合
EMR コンソールで、HDFS サービスの Configure ページに移動します。hadoop_namenode_heapsize パラメーターおよび hadoop_secondary_namenode_heapsize パラメーターを検索し、必要に応じてそれぞれの値を設定します。
説明変更を適用するには、対応する NameNode または SecondaryNameNode サービスを再起動する必要があります。
HDFS Web UI でファイル数(Files)およびブロック数(Blocks)を確認できます。Web UI へのアクセス方法については、「オープンソースコンポーネントの Web UI へのアクセス」をご参照ください。NameNode JVM メモリサイズは、次の数式で算出できます。
推奨値 (MB) = (ファイル数(百万単位) + ブロック数(百万単位)) × 512たとえば、中規模以下のファイルが 1,000 万個あり、各ファイルが 1 ブロックを超えない場合、ブロック数も 1,000 万となります。この場合の推奨メモリサイズは (10 + 10) × 512 = 10,240 MB です。
以下の表は、ほとんどのファイルが 1 ブロックを超えないシナリオにおける推奨値を示しています。
ファイル数
推奨値 (MB)
10,000,000
10240
20,000,000
20480
50,000,000
51200
100,000,000
102400
-
DataNode ごとの JVM メモリサイズの調整
- 背景情報: HDFS では、DataNode がデータブロックのメタデータを記録します。このメタデータは一定量のメモリ領域を占有します。デフォルトの JVM メモリ構成は HDFS の一般的な要件を満たすことができますが、HDFS に書き込まれるファイル数が増加し続け、HDFS に保存されるファイル数が継続的に増加する場合があります。DataNode 上のブロック数はファイル数に依存します。新しく書き込まれるファイル数がデフォルトのメモリ領域構成を超えると、これらのファイルは保存できません。このような場合は、メモリサイズを変更する必要があります。
- 推奨事項: EMR コンソールの HDFS サービスページで [構成] タブに移動します。[構成フィルター] セクションで hadoop_datanode_heapsize パラメーターを検索し、ビジネス要件に基づいてこのパラメーターの値を変更してください。DataNode ごとの JVM メモリサイズは、次の数式で算出できます。
EMR クラスター内の DataNode あたりのレプリカ数 = データブロック数 × 3 / DataNode 数 推奨メモリサイズ = DataNode あたりのレプリカ数(百万単位) × 2048 MB説明 構成完了後、構成を適用するには DataNode を再起動する必要があります。たとえば、EMR クラスター内の HDFS が三副本ストレージを提供しており、EMR クラスターにデプロイされた Elastic Compute Service (ECS) インスタンスがビッグデータインスタンスファミリーに属し、コアノード数が 6 であるとします。中規模以下のファイルが 1,000 万個あり、すべてのファイルが小~中規模であるためデータブロック数も 1,000 万個である場合、DataNode あたりのレプリカ数は (10,000,000 × 3 / 6) で算出される 5,000,000 となります。推奨メモリサイズは、5 × 2048 MB で算出される 10,240 MB です。
以下の表は、DataNode あたりのレプリカ数と推奨メモリサイズのマッピングを示しています。ほとんどのファイルのサイズは 1 ブロックを超えないものとします。DataNode あたりのレプリカ数 推奨メモリサイズ (MB) 1,000,000 2048 2,000,000 4096 5,000,000 10240 説明 推奨値には、JVM カーネル用のメモリ領域およびピーク時におけるジョブ実行用のメモリ領域が含まれています。通常は、この推奨値をそのまま使用できます。