我正在使用在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
但是没有帮助。
您对如何处理此超时有任何建议吗?
您是否尝试过设置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"