より性能の高いノードを選択すると、r3.xlarge
とm3.xlarge
の間で、追加のリソースが自動的に使用されますか?それとも、手動で設定し調整する必要があるのでしょうか?EMRでスパークを設定する
これまでの設定は、クラスタを最大限に活用するために調整する最も重要な設定値です。
より性能の高いノードを選択すると、r3.xlarge
とm3.xlarge
の間で、追加のリソースが自動的に使用されますか?それとも、手動で設定し調整する必要があるのでしょうか?EMRでスパークを設定する
これまでの設定は、クラスタを最大限に活用するために調整する最も重要な設定値です。
それは
AWSは、あなたがこれを行うにしようと、あなたのEMRのクラスタ構成で有効にできる設定があります。..しようとします。 spark.dynamicAllocation.enabledと呼ばれます。過去にはSparkに多すぎるリソースを提供するこの設定の問題がありました。新しいリリースでは、彼らはスパークするために与えている量を下げました。しかし、Pysparkを使用している場合、Pythonのリソース要件は考慮されません。
通常、どのインスタンスタイプが選択されているかに基づいて、ダイナミックアロケーションを無効にし、適切なメモリおよびコア設定を自分のコードから動的に設定します。
このページでは、彼らはあなたのために選択されますデフォルトで何を説明します。 http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-spark-configure.html
あなたが手動で行う場合は、最低で設定したいでしょう:
spark.executor.memory
spark.executor.cores
はまた、あなたが調整する必要があります
OS用にコアといくつかのRAMを残しておき、あなたがusiの場合はPython用のRAMを残しておいてくださいPyspark。
動的割り当てを明確にすることは、Spark自体の特性と機能です。 PySparkを使用する場合、Pythonから必要なもの(インタープリタがJVMヒープ外で実行されるため)に応じて、spark.yarnを増やす必要があります。[driver | executor] .memoryOverhead(http://spark.apache.org/docs/latest/ running-on-yarn.html#configuration)。また、スケジューラーとノードマネージャーのリソースをデフォルト値を超えるように調整して、メモリーを過剰に購読するリスクを避けることを強くお勧めします。 – ChristopherB