Amazon EMR ノートブックで Apache Spark ジョブの設定をカスタマイズする方法を教えてください。
簡単な説明
Amazon EMR ノートブックは、サーバーレスの Jupyter ノートブックです。Jupyter ノートブックは、Apache Livy サーバーを介してリモート EMR クラスターで Spark をインタラクティブに操作するためのクライアントとして Sparkmagic カーネルを使用します。Sparkmagic コマンドを使用して Spark 設定をカスタマイズできます。カスタム設定は、次の処理を実行する際に役立ちます。
- Spark ジョブのエグゼキューターメモリとエグゼキューターコアの変更
- Spark のリソース割り当ての変更
解決方法
現在のセッションを変更する
1. Jupyter ノートブックセルで、%%configure コマンドを実行してジョブ設定を変更します。次の例では、コマンドは Spark ジョブのエグゼキューターメモリを変更します。
%%configure -f
{"executorMemory":"4G"}
2. 通常 --conf オプションを使用して渡すその他の設定については、次の例に示すように、ネストされた JSON オブジェクトを使用します。conf オブジェクトを SparkContext または SparkSession に明示的に渡す代わりに、このメソッドを使用します。
%%configure -f
{"conf":{"spark.dynamicAllocation.enabled":"false"}}
設定が変更されたことを確認する
1. クライアント側で、Jupyter で %%info コマンドを実行して、現在のセッション設定を確認します。出力例:
Current session configs: {'executorMemory': '4G', 'conf': {'spark.dynamicAllocation.enabled': 'false'}, 'kind': 'pyspark'}
2. サーバー側で、EMR クラスターの /var/log/livy/livy-livy-server.out log を確認します。SparkSession が開始された場合、次のようなログエントリが表示されます。
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]]
関連情報
Apache Livy - REST API