このトピックでは、NameNodeとDataNodeのJava仮想マシン(JVM)のメモリサイズを調整して、Hadoop Distributed File System(HDFS)サービスの安定性を向上させる方法について説明します。
NameNodeのJVMのメモリサイズを調整する
背景情報:HDFSでは、NameNodeは各ファイルのメタデータを記録します。メタデータは特定量のメモリ領域を占有します。デフォルトのJVMメモリ構成は、HDFSの一般的な要件を満たすことができます。場合によっては、より多くのファイルがHDFSに書き込まれ、HDFSに保存されているファイルの数が継続的に増加します。新しく書き込まれたファイルの数がデフォルトのJVMメモリ構成を超えると、これらのファイルを保存できません。この場合、メモリサイズを変更する必要があります。
推奨事項:NameNodeのJVMのメモリサイズを変更します。次の操作を実行できます。
高可用性(HA)クラスター
E-MapReduce(EMR)コンソールにログインします。HDFSサービスを変更するクラスターを見つけ、[アクション] 列の [サービス] をクリックします。[サービス] タブで、HDFSサービスを見つけて [構成] をクリックします。HDFSサービスページの [構成] タブで、hadoop_namenode_heapsize パラメーターを検索し、ビジネス要件に基づいてこのパラメーターの値を変更します。
非HAクラスター
EMRコンソールにログインします。HDFSサービスを変更するクラスターを見つけ、[アクション] 列の [サービス] をクリックします。[サービス] タブで、HDFSサービスを見つけて [構成] をクリックします。HDFSサービスページの [構成] タブで、hadoop_namenode_heapsize パラメーターと hadoop_secondary_namenode_heapsize パラメーターを検索し、ビジネス要件に基づいてパラメーターの値を変更します。
説明構成が完了したら、構成を有効にするためにNameNodeまたはセカンダリNameNodeを再起動する必要があります。
HDFSのWebユーザーインターフェース(UI)で、ファイルの数とデータブロックの数を確認できます。詳細については、「オープンソースコンポーネントのWeb UIへのアクセス」をご参照ください。次の式を使用して、NameNodeのJVMのメモリサイズを計算できます。
Recommended memory size = (Number of files, measured in millions + Number of data blocks, measured in millions) × 512 MBたとえば、1,000万個のファイルがあり、すべてが中小規模のファイルであり、各ファイルのサイズはブロックのサイズを超えていません。したがって、ブロックの数も1,000万です。この例では、推奨メモリサイズは 10,240 MB で、次の式を使用して計算されます。(10 + 10)× 512 MB。
次の表は、ファイルの数と推奨メモリサイズの対応を示しています。ほとんどのファイルのサイズは、ブロックのサイズを超えていません。
ファイルの数
推奨メモリサイズ(MB)
10,000,000
10,240
20,000,000
20,480
50,000,000
51,200
100,000,000
102,400
各DataNodeのJVMのメモリサイズを調整する
- 背景情報:HDFSでは、DataNodeはデータブロックのメタデータを記録します。メタデータは特定量のメモリ領域を占有します。デフォルトのJVMメモリ構成は、HDFSの一般的な要件を満たすことができます。場合によっては、より多くのファイルがHDFSに書き込まれ、HDFSに保存されているファイルの数が継続的に増加します。DataNodeのブロック数は、ファイルの数によって異なります。新しく書き込まれたファイルの数がデフォルトのメモリ領域構成を超えると、これらのファイルを保存できません。この場合、メモリサイズを変更する必要があります。
- 推奨事項:EMRコンソールのHDFSサービスページの [構成] タブに移動します。[構成フィルター] セクションで hadoop_datanode_heapsize パラメーターを検索し、ビジネス要件に基づいてこのパラメーターの値を変更します。次の式を使用して、各DataNodeのJVMのメモリサイズを計算できます。
Number of replicas per DataNode in an EMR cluster = Number of data blocks × 3/Number of DataNodes Recommended memory size = Number of replicas per DataNode, measured in millions × 2048 MB説明 構成が完了したら、構成を適用するためにDataNodeを再起動する必要があります。たとえば、EMRクラスターのHDFSが3重ストレージを提供し、EMRクラスターにデプロイされたElastic Compute Service(ECS)インスタンスがビッグデータインスタンスファミリーに属し、コアノードの数が 6 であるとします。1,000万個のファイルがあり、すべてのファイルが中小規模のファイルであるためデータブロックの数も1,000万個の場合、DataNodeあたりのレプリカ数は 5,000,000 で、次の式を使用して計算されます。(10,000,000 × 3/6)。推奨メモリサイズは 10,240 MB で、次の式を使用して計算されます。5 × 2048 MB。
次の表は、DataNodeあたりのレプリカ数と推奨メモリサイズの対応を示しています。ほとんどのファイルのサイズは、ブロックのサイズを超えていません。DataNodeあたりのレプリカ数 推奨メモリサイズ(MB) 1,000,000 2048 2,000,000 4096 5,000,000 10240 説明 推奨値には、JVMカーネルのメモリ領域と、ピーク時にジョブを実行するためのメモリ領域が含まれています。通常の状況では、推奨値を直接使用できます。