HDFSに関連するチューニングパラメーターについて以下に説明します。
本機能では、NameNodeのヒープサイズの初期値として、NameNodeが動作するサーバの搭載メモリから値を算出し設定しています。
NameNodeが動作するサーバの搭載メモリ(MB) - 2048(MB) ÷ 4
NameNodeのヒープサイズの推奨値は、HDFS上に配置するファイル数によって決定します。
100万ファイルあたり1GBのヒープサイズをNameNodeに設定することを推奨します。
ファイル名:/etc/opt/FJSVbsb/bdpp/hadoop/hadoop-env.sh
パラメーター名:HADOOP_NAMENODE_OPTS の -Xmx
例
NameNodeのヒープサイズを1GB(1024MB)に設定する例:
export HADOOP_NAMENODE_OPTS="-Xmx1024m -Xms1024m -Dhadoop.security.logger=INFO,DRFAS -Dhdfs.audit.logger=INFO,DRFAAUDIT $HADOOP_NAMENODE_OPTS"
ポイント
-Xmsを-Xmxと同じ値を設定することを推奨します。
本機能では、DataNodeのヒープサイズの初期値として、DataNodeが動作するサーバの搭載メモリから値を算出し設定しています。
DataNodeが動作するサーバの搭載メモリ(MB) - 2048(MB) ÷ 12
DataNodeのヒープサイズの推奨値は、対象DataNode上に配置するブロック数によって決定します。100万ブロックあたり1GBのヒープサイズをDataNodeに設定することを推奨します。
ファイル名:/etc/opt/FJSVbsb/bdpp/hadoop/hadoop-env.sh
パラメーター名:HADOOP_DATANODE_OPTS の -Xmx
例
DataNodeのヒープサイズを1GB(1024MB)に設定する例:
export HADOOP_DATANODE_OPTS="-Xmx1024m -Xms1024m -Dhadoop.security.logger=ERROR,DRFAS $HADOOP_DATANODE_OPTS"
ポイント
-Xmsを-Xmxと同じ値を設定することを推奨します。
HDFS上に新たに作成するファイルのブロックサイズをバイト単位で指定します。
本機能では、128MBを設定しています。
本パラメーターの推奨値は、128MBです。
ファイル名:/etc/opt/FJSVbsb/bdpp/hadoop/hdfs-site.xml
例
ブロックサイズを128MB(134217728bytes)に設定する例:
<property> <name>dfs.blocksize</name> <value>134217728</value> </property>
ポイント
本パラメーターを変更した場合は、“D.4 Apache Spark”の以下のパラメーターも本パラメーターと同じ値に変更してください。
(6) spark.files.maxPartitionBytes
(7) spark.sql.files.maxPartitionBytes
NameNodeのスレッド数を指定します。
本機能では、設定を行っていません。そのため、デフォルト値の 10 となります。
本パラメーターの推奨値は、以下になります。(ln()の結果は切り上げます。)
ln(DataNodeのサーバ数) * 20
ファイル名:/etc/opt/FJSVbsb/bdpp/hadoop/hdfs-site.xml
例
NameNodeのスレッド数を40に設定する例:
<property> <name>dfs.namenode.handler.count</name> <value>40</value> </property>
HDFS のデータ以外で使用するために予約しておく dfs.datanode.data.dir を配置したディスクの容量(単位:バイト)を指定します。
本機能では、dfs.datanode.data.dir で指定しているディスクの空き容量の40%を設定します。
本パラメーターの推奨値は、以下になります。
dfs.datanode.data.dirで指定したディスク全容量の10%、または10GBのいずれかの小さい値
ファイル名:/etc/opt/FJSVbsb/bdpp/hadoop/hdfs-site.xml
例
HDFSのデータ以外に使用するディスクサイズを1GBに設定する例:
<property> <name>dfs.datanode.du.reserved</name> <value>1073741824</value> </property>
NameNodeがメタデータを格納するディレクトリを指定します。
本機能では、以下のディレクトリを設定しています。
/var/opt/FJSVbsb/bdpp/hdfs/name
本パラメーターの推奨値は、内蔵ディスク上のディレクトリです。
複数のディレクトリを指定することが可能ですが、本機能ではHDFSを二重化しているため、複数のディレクトリを指定する必要はありません。
ファイル名:/etc/opt/FJSVbsb/bdpp/hadoop/hdfs-site.xml
例
NameNodeがメタデータを格納するディレクトリを/var/opt/FJSVbsb/bdpp/hdfs/nameとする場合の例:
<property> <name>dfs.namenode.name.dir</name> <value>/var/opt/FJSVbsb/bdpp/hdfs/name</value> </property>
DataNodeがブロックファイルを格納するディレクトリを指定します。
本機能では、以下のディレクトリを設定しています。
/var/opt/FJSVbsb/bdpp/hdfs/data
本パラメーターの推奨値は、内蔵ディスク上のディレクトリです。
カンマ区切りで複数のディレクトリを指定することができます。
複数のディレクトリを指定した場合、ブロックファイルが各ディレクトリに分散配置され、読み書きのパフォーマンスが向上するため、複数のディレクトリを指定することを推奨します。
ファイル名:/etc/opt/FJSVbsb/bdpp/hadoop/hdfs-site.xml
例
DataNodeのメタデータを格納するディレクトリを/disk1/hdfs/data、/disk2/hdfs/dataとする場合の例:
<property> <name>dfs.datanode.data.dir</name> <value>/disk1/hdfs/data,/disk2/hdfs/data</value> </property>