我正在使用在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(本机方法)
在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
但这没有帮助。
您对如何处理此超时有任何建议吗?
答案 0 :(得分:0)
您是否尝试过设置spark.yarn.am.waitTime
?
仅在群集模式下使用。 YARN Application Master的时间 等待SparkContext初始化。
上面的引文来自here。
关于我的情况的更多背景信息:
我正在使用spark-submit来执行java-spark作业。我将客户端部署到群集,并且客户端正在执行很长时间的操作,这导致超时。
我通过以下方式解决了这个问题:
spark-submit --master yarn --deploy-mode cluster --conf "spark.yarn.am.waitTime=600000"