私は3つのm4.2xlargeインスタンス(1つのマスターと2つのコアノード)でEMRでスパークコードを実行しようとしています。デフォルト以外のspark.executor.memory設定が有効でないEMRのpysparkコード?
各マシンには32GBのメモリがあります。私は、このエラーに実行し続ける:
16/07/17 23:32:35 WARN TaskSetManager: Lost task 5.0 in stage 3.0 (TID 41, ip-172-31-55-189.ec2.internal): ExecutorLostFailure (executor 2 exited caused by one of the running tasks) Reason: Container killed by YARN for exceeding memory limits. 5.8 GB of 5.5 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
メモリを後押しするために、私はSparkContext
を作成する前に、私のスパークのコードで以下のconf
の設定を使用しています。
conf.set('spark.executor.instances', 2)
conf.set('spark.executor.cores', 2)
conf.set('spark.executor.memory', '12g')
conf.set('spark.yarn.driver.memoryOverhead', '0.2')
sc = SparkContext(conf=conf)
ただし、エグゼキュータごとにメモリが増えても効果がないことを示す同じエラーが表示されます。私が間違ってやっていることと、各コアインスタンス上の2つのタスクの間で32GBのメモリを分割する方法は何ですか?
「分数」の設定が違うようです。これは他のいくつかのオプションでは '8g'タイプの文字列ではなく数値でもあります。 APIに奇妙な不一致があります。私がそれを数値8192の値に変更したとき、物事はうまくいった。 – Gopala