Amazon EMR Studio Workspace の Spark 設定を変更したいです。
簡単な説明
Amazon Elastic Compute Cloud (Amazon EC2) または EMR Serverless リモートクラスターの Spark 設定をカスタマイズするには、Sparkmagic コマンドを使用して executorMemory、executorCores、リソース割り当てを変更します。
Amazon Elastic Kubernetes Service (Amazon EKS) リモートクラスターの場合は、SparkContext オブジェクトで Spark 設定を構成してください。Amazon EKS は Sparkmagic コマンドをサポートしていません。詳細については、「考慮事項と制限事項」を参照してください。
解決策
Amazon EC2 または EMR Serverless リモートクラスターの Spark 設定をカスタマイズする
次の手順を実行します。
-
ジョブ設定を変更するには、Workspace セルで %%configure コマンドを実行する。
例:
%%configure -f
{"executorMemory":"4G"}
**注: ** 上記の例では、Spark ジョブの executorMemory が変更されています。
-
-conf オプションで渡す追加設定には、ネストされた JSON オブジェクトを使用する。
**注: ** SparkContext または Sparksession にオブジェクトを渡すには、conf の代わりに -conf を使用してください。詳細については、Apache Livy ウェブサイトの "Spark configuration" (Spark 設定) を参照してください。
-
例:
%%configure -f
{
"driverMemory": "4G",
"driverCores": 4,
"executorMemory" : "8G",
"executorCores": 2,
"conf": {
"spark.dynamicAllocation.maxExecutors" : 10,
"spark.dynamicAllocation.minExecutors": 1
}
}
Amazon EKS クラスターに接続された Workspace で Spark 設定をカスタマイズするには、SparkContext オブジェクトで Spark に関する設定を行います。
spark.conf.set("spark.executor.memory", "8g")
Spark の設定を確認する
次の操作を実行します。
-
Amazon EC2 および EMR Serverless の場合は、クライアント側の Workspace で %%info コマンドを実行する。
出力例:
Current session configs: {'driverMemory': '4G', 'driverCores': 4, 'executorMemory': '8G', 'executorCores': 2, 'conf': {'spark.dynamicAllocation.maxExecutors': 10, 'spark.dynamicAllocation.minExecutors': 1}, 'proxyUser': 'assumed-role_Admin_biditdas-Isengard', 'kind': 'pyspark'}
-
Amazon EC2 の場合は、クラスターのプライマリノードにある /var/log/livy/livy-livy-server.out のログを確認する。Spark セッションが開始されると、次のようなログエントリが表示される。
20/06/24 10:11:22 INFO InteractiveSession$: Creating Interactive session 2: [owner: null, request: [kind: pyspark, proxyUser: None, executorMemory: 4G, conf: spark.dynamicAllocation.enabled -> false, heartbeatTimeoutInSecond: 0]]
-
Amazon EKS の場合は、Spark UI を使用する。
関連情報
EMR Studio で magic コマンドを使用してカーネルを強化する
Apache Livy ウェブサイトの REST API
GitHub ウェブサイトの新しいカーネルで利用可能な機能