Apache Sparkに関連するチューニングパラメーターについて以下に説明します。
なお、タイトルは以下の形式で記載しています。
spark-defaults.confへの設定パラメーター名/spark-submitコマンド引数名
executorプロセス1つあたりに使用するメモリサイズを指定します。
本機能では、設定を行っていません。そのため、デフォルト値の 1 となります。
動作するSparkアプリケーションに応じて値を決定してください。
ただし、以下の値を超えて設定することはできません。(Sparkアプリケーションが実行できません。)
yarn.nodemanager.resource.memory-mb
以下のいずれかで設定できます。(両者に設定した場合はspark-submitコマンドの引数が優先されます。)
spark-submitコマンド引数での設定:--executor-memory
ファイルへの設定:/etc/opt/FJSVbsb/bdpp/spark/spark-defaults.conf
例
executorプロセス1つあたりに使用するメモリサイズ2GBをファイルに設定する例:
spark.executor.memory 2g
executorプロセス1つあたりに使用するCPUコア数を指定します。
本機能では、設定を行っていません。そのため、デフォルト値の 1 となります。
動作するSparkアプリケーションの多重度に応じて値を決定してください。
ただし、以下の値を超えて設定することはできません。(Sparkアプリケーションが実行できません。)
yarn.nodemanager.resource.cpu-vcores
以下のいずれかで設定できます。(両者に設定した場合はspark-submitコマンドの引数が優先されます。)
spark-submitコマンドの引数:--executor-cores
ファイルへの設定:/etc/opt/FJSVbsb/bdpp/spark/spark-defaults.conf
例
executorプロセス1つあたりに使用するCPUコア数2をファイルに設定する例:
spark.executor.cores 2
ポイント
本パラメーターで指定したCPUコア数が、1つのexecutorあたりで動作するスレッド数となります。
本パラメーターに加えて、以下で説明しているパラメーターからSparkアプリケーションの多重度は決定します。
(5) spark.executor.instances(--num-executors)
(8) spark.task.cpus
Sparkアプリケーションの多重度は以下の式のとおりとなります。
(2) × (5) ÷ (8)
driverプロセスに使用するメモリサイズを指定します。
本機能では、設定を行っていません。そのため、デフォルト値の 1となります。
動作するSparkアプリケーションのmain処理で利用するメモリ容量に応じて値を決定してください。
以下のいずれかで設定できます。(両者に設定した場合はspark-submitコマンドの引数が優先されます。)
spark-submitコマンドの引数:--driver-memory
ファイルへの設定:/etc/opt/FJSVbsb/bdpp/spark/spark-defaults.conf
例
driverプロセスに使用するメモリサイズ2GBをファイルに設定する例:
spark.driver.memory 2g
driverプロセスに使用するコア数を指定します。
本機能では、設定を行っていません。そのため、デフォルト値の 1 となります。
動作するSparkアプリケーションのmain処理のスレッド数に応じて値を決定してください。
以下のいずれかで設定できます。(両者に設定した場合はspark-submitコマンドの引数が優先されます。)
spark-submitコマンドの引数:--driver-cores
ファイルへの設定:/etc/opt/FJSVbsb/bdpp/spark/spark-defaults.conf
例
driverプロセスに使用するCPUコア数2をファイルに設定する例:
spark.driver.cores 2
Sparkアプリケーションが起動するexecutorの数を指定します。
本機能では、設定を行っていません。そのため、デフォルト値の 2 となります。
動作するSparkアプリケーションの多重度に応じて値を決定してください。
以下のいずれかで設定できます。(両者に設定した場合はspark-submitコマンドの引数が優先されます。)
spark-submitコマンドの引数:--num-executors
ファイルへの設定:/etc/opt/FJSVbsb/bdpp/spark/spark-defaults.conf
例
Sparkアプリケーションが起動するexecutor数4をファイルに設定する例:
spark.executor.instances 4
ポイント
本パラメーターで指定した値が、1つのSparkアプリケーションが起動するexecutorプロセスの数となります。
本パラメーターに加えて、以下で説明しているパラメーターからSparkアプリケーションの多重度は決定します。
(2) spark.executor.cores/--executor-cores
(8) spark.task.cpus
Sparkアプリケーションの多重度は以下の式のとおりとなります。
(2) × (5) ÷ (8)
RDD使用時のファイルを読み込む際の1つのパーティションの最大バイト数を指定します。
本機能では、設定を行っていません。そのため、デフォルト値の 128MB となります。
HDFSのブロックサイズ(dfs.blocksizeで指定)と同じ値とすることを推奨します。
ファイル名:/etc/opt/FJSVbsb/bdpp/spark/spark-defaults.conf
例
1つのパーティションの最大バイト数を128MBに設定する例:
spark.files.maxPartitionBytes 134217728
SparkSQL、Dataset、Dataframe使用時のファイルを読む時に1つのパーティションに詰め込む最大のバイト数を指定します。
本機能では、設定を行っていません。そのため、デフォルト値の 128MB となります。
HDFSのブロックサイズ(dfs.blocksizeで指定)と同じ値とすることを推奨します。
ファイル名:/etc/opt/FJSVbsb/bdpp/spark/spark-defaults.conf
例
1つのパーティションの最大バイト数を128MBにを設定する例:
spark.sql.files.maxPartitionBytes 134217728
executor内の各タスクごとに割り当てるコア数を指定します。
本機能では、設定を行っていません。そのため、デフォルト値の 1 となります。
動作するSparkアプリケーションの並列処理部分のスレッド数に応じて値を決定してください。
ただし、以下の値を超えて設定することはできません。(Sparkアプリケーションが実行できません。)
yarn.nodemanager.resource.cpu-vcores
ファイル名:/etc/opt/FJSVbsb/bdpp/spark/spark-defaults.conf
例
各タスクごと割り当てるコア数を2に設定する例:
spark.task.cpus 2
ポイント
本パラメーターで指定した値が、executorが実行するタスクのスレッド数となります。
本パラメーターに加えて、以下で説明しているパラメーターからSparkアプリケーションの多重度は決定します。
(2) spark.executor.cores/--executor-cores
(5) spark.executor.instances/--num-executors
Sparkアプリケーションの多重度は以下の式のとおりとなります。
(2) × (5) ÷ (8)