【发布时间】:2019-01-26 20:19:55
【问题描述】:
我使用的是在 Amazon EMR 集群上运行的 apache spark 2.2.1。有时作业会因“期货超时”而失败:
java.util.concurrent.TimeoutException:期货在 [100000 毫秒] 后超时
在 scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219)
在 scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223)
在 org.apache.spark.util.ThreadUtils$.awaitResult(ThreadUtils.scala:201)
在 org.apache.spark.deploy.yarn.ApplicationMaster.runDriver(ApplicationMaster.scala:401)
在 org.apache.spark.deploy.yarn.ApplicationMaster.run(ApplicationMaster.scala:254)
在 org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$main$1.apply$mcV$sp(ApplicationMaster.scala:764)
在 org.apache.spark.deploy.SparkHadoopUtil$$anon$2.run(SparkHadoopUtil.scala:67)
在 org.apache.spark.deploy.SparkHadoopUtil$$anon$2.run(SparkHadoopUtil.scala:66)
在 java.security.AccessController.doPrivileged(Native Method)
在 javax.security.auth.Subject.doAs(Subject.java:422)
在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1836)
在 org.apache.spark.deploy.SparkHadoopUtil.runAsSparkUser(SparkHadoopUtil.scala:66)
在 org.apache.spark.deploy.yarn.ApplicationMaster$.main(ApplicationMaster.scala:762)
在 org.apache.spark.deploy.yarn.ApplicationMaster.main(ApplicationMaster.scala)
我在 spark-defaults.conf 中更改了 2 个参数:
spark.sql.broadcastTimeout 1000
spark.network.timeout 10000000
但它没有帮助。
你对如何处理这个超时有什么建议吗?
【问题讨论】:
-
通过查看跟踪,这似乎与
broadcast无关,因此spark.sql.broadcastTimeout 1000可能无济于事。