【问题标题】:Intermittent Timeout Exception using Spark使用 Spark 的间歇性超时异常
【发布时间】:2015-07-28 22:18:42
【问题描述】:

我有一个包含 10 个节点的 Spark 集群,在第一次使用 Spark Context 后出现此异常:

14/11/20 11:15:13 ERROR UserGroupInformation: PriviledgedActionException as:iuberdata (auth:SIMPLE) cause:java.util.concurrent.TimeoutException: Futures timed out after [120 seconds]
Exception in thread "main" java.lang.reflect.UndeclaredThrowableException: Unknown exception in doAs
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1421)
    at org.apache.spark.deploy.SparkHadoopUtil.runAsSparkUser(SparkHadoopUtil.scala:52)
    at org.apache.spark.executor.CoarseGrainedExecutorBackend$.run(CoarseGrainedExecutorBackend.scala:113)
    at org.apache.spark.executor.CoarseGrainedExecutorBackend$.main(CoarseGrainedExecutorBackend.scala:156)
    at org.apache.spark.executor.CoarseGrainedExecutorBackend.main(CoarseGrainedExecutorBackend.scala)
Caused by: java.security.PrivilegedActionException: java.util.concurrent.TimeoutException: Futures timed out after [120 seconds]
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
    ... 4 more

这个guy 也有类似的问题,但我已经尝试过他的解决方案,但没有奏效。

here 也会发生同样的异常,但这里的问题并不相同,因为我在主服务器或从服务器以及客户端中都使用 spark 版本 1.1.0。

我尝试将超时时间增加到 120 秒,但仍然无法解决问题。

我正在通过脚本部署环境,并且正在使用 context.addJar 将我的代码包含到类路径中。 这个问题是间歇性的,我不知道如何跟踪它为什么会发生。有人在配置 Spark 集群时遇到过这个问题,知道如何解决吗?

【问题讨论】:

  • 由于这是 google 中的最佳答案,以供将来参考,如果您的作业在配置的时间段内(spark 2.0 中为 120 秒)停止,则 rpc 超时可能在没有防火墙/网络配置的情况下发生。我现在遇到了这个问题,正在寻找解决方案,而不是增加超时时间。

标签: scala apache-spark


【解决方案1】:

我们有一个类似的问题,很难调试和隔离。长话短说 - Spark 使用 Akka,它对 FQDN 主机名解析为 IP 地址非常挑剔。即使您在所有地方都指定了 IP 地址,这也是不够的。答案here 帮助我们隔离了问题。

一个有用的测试是在 master 上运行 netcat -l <port> 并在 worker 上运行 nc -vz <host> <port> 来测试连接性。使用 IP 地址和 FQDN 运行测试。您可以从以下日志 sn-p 的 WARN 消息中获取 Spark 使用的名称。对我们来说是host032s4.staging.companynameremoved.info。我们的 IP 地址测试通过了,FQDN 测试失败了,因为我们的 DNS 设置不正确。

INFO 2015-07-24 10:33:45 Remoting: Remoting started; listening on addresses :[akka.tcp://driverPropsFetcher@10.40.246.168:35455]
INFO 2015-07-24 10:33:45 Remoting: Remoting now listens on addresses: [akka.tcp://driverPropsFetcher@10.40.246.168:35455]
INFO 2015-07-24 10:33:45 org.apache.spark.util.Utils: Successfully started service 'driverPropsFetcher' on port 35455.
WARN 2015-07-24 10:33:45 Remoting: Tried to associate with unreachable remote address [akka.tcp://sparkDriver@host032s4.staging.companynameremoved.info:50855]. Address is now gated for 60000 ms, all messages to this address will be delivered to dead letters.
ERROR 2015-07-24 10:34:15 org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:skumar cause:java.util.concurrent.TimeoutException: Futures timed out after [30 seconds]

我们必须做的另一件事是在 spark 提交脚本中指定 spark.driver.hostspark.driver.port 属性。这是因为我们的机器有两个 IP 地址,而 FQDN 解析为错误的 IP 地址。

确保您的网络和 DNS 条目正确!!

【讨论】:

    【解决方案2】:

    防火墙配置错误,在某些情况下,它不允许从属连接到集群。 这产生了超时问题,因为从站无法连接到服务器。 如果您遇到此超时,请检查您的防火墙配置。

    【讨论】:

    • 嗨,我知道这篇文章已经有一段时间了,但我面临着同样的问题。您能否提供更多提示如何检查导致此问题的防火墙设置?
    • 嗨@OlegShirokikh,你在哪里部署?是本地部署吗?您必须检查您的集群服务器是否可以相互访问。这里的slaves没有访问master的权限,导致了这个问题。
    【解决方案3】:

    我遇到了类似的问题,我在submitting the application to Spark 时使用cluster 部署模式设法解决了这个问题。

    (因为即使允许所有传入流量到我的主服务器和单个从属服务器也不允许我使用 client 部署模式。在更改它们之前,我有由 @ 设置的默认安全组(AWS 防火墙)设置987654322@ 来自 Spark 1.2.0)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多