私は次の問題の解決策をたくさん探してきました。 Scala 2.11.8
とSpark 2.1.0
を使用しています。物理的な限界を超えて走っているスパークコンテナ
Application application_1489191400413_3294 failed 1 times due to AM Container for appattempt_1489191400413_3294_000001 exited with exitCode: -104
For more detailed output, check application tracking page:http://ip-172-31-17-35.us-west-2.compute.internal:8088/cluster/app/application_1489191400413_3294Then, click on links to logs of each attempt.
Diagnostics: Container [pid=23372,containerID=container_1489191400413_3294_01_000001] is running beyond physical memory limits.
Current usage: 1.4 GB of 1.4 GB physical memory used; 3.5 GB of 6.9 GB virtual memory used. Killing container.
私はここでエラーで報告されている1.4 GB
よりも多くを割り当てられました注意してください。私はエグゼクティブの誰もが失敗しているのを見ていないので、このエラーからの私の読書は、ドライバーがより多くの記憶を必要とすることであった。しかし、私の設定は伝播していないようです。
次のように私は、糸にジョブパラメータを設定しています:
additionalSparkConfSettings
でパラメータをプロビジョニングメモリは次のスニペットで設定された
val conf = new SparkConf()
.setAppName(jobName)
.set("spark.hadoop.mapred.output.committer.class", "com.company.path.DirectOutputCommitter")
additionalSparkConfSettings.foreach { case (key, value) => conf.set(key, value) }
// this is the implicit that we pass around
implicit val sparkSession = SparkSession
.builder()
.appName(jobName)
.config(conf)
.getOrCreate()
:
HashMap[String, String](
"spark.driver.memory" -> "8g",
"spark.executor.memory" -> "8g",
"spark.executor.cores" -> "5",
"spark.driver.cores" -> "2",
"spark.yarn.maxAppAttempts" -> "1",
"spark.yarn.driver.memoryOverhead" -> "8192",
"spark.yarn.executor.memoryOverhead" -> "2048"
)
私の設定は、実際に伝播しませんか?あるいは、私はログを誤解していますか?
ありがとうございます!
私は 'spark.yarn.driver.memoryOverhead'を10240に変更しましたが、上記のエラーと同じエラーでジョブが失敗しました。しかし、 'spark.driver.memory'を数GBで更新したところ、成功しました。 'memoryOverhead' configsが実際に動作しないようです。 – Navneet
この問題は解決しましたか? – ilcord