【问题标题】:Spark tasks blockes randomly on standalone clusterSpark 任务在独立集群上随机阻塞
【发布时间】:2017-01-20 18:19:42
【问题描述】:

我们有一个在 Spark Standalone 上运行的非常复杂的应用程序。 在某些情况下,来自某个工作人员的任务会在 RUNNING 状态下无限地随机阻塞。

额外信息:

  • 日志中没有任何错误
  • 在调试中使用记录器运行,我没有看到任何相关消息(我看到任务何时开始但没有活动)
  • 如果我只有 1 名工人,这些工作可以正常工作
  • 相同的作业可以在适当的时间内第二次执行而​​不会出现任何问题
  • 我没有任何可能导致某些任务延迟的非常大的分区。
  • 在 spark 2.0 中,我已从 RDD 移至数据集,但我遇到了同样的问题
  • 在 spark 1.4 中,我能够通过打开推测来克服这个问题,但在 spark 2.0 中,阻塞任务来自不同的工作人员(而在 1.4 中,我只有 1 个工作人员的阻塞任务)所以推测并不能​​解决我的问题.
  • 我在更多环境中遇到问题,所以我认为它与硬件无关。

有没有人经历过类似的事情?关于如何识别问题的任何建议?

非常感谢!

稍后编辑:我想我面临着这里描述的相同问题:Spark Indefinite Waiting with "Asked to send map output locations for shuffle" 和这里:http://apache-spark-user-list.1001560.n3.nabble.com/Spark-stalling-during-shuffle-maybe-a-memory-issue-td6067.html,但两者都没有有效的解决方案。

日志中最后无限重复的是:[dispatcher-event-loop-18] DEBUG org.apache.spark.scheduler.TaskSchedulerImpl - parentName: , name: TaskSet_2, runningTasks: 6

【问题讨论】:

  • 1) 你能提取一些实际阻塞的代码吗? 2) 你检查过 GC 日志吗 3) 你是否使用了某种形式的线程锁定/内部多线程?
  • 1) 应用程序非常复杂,我找不到导致阻塞的实际部分。 2)日志中没有问题。即使这是一个 gc/内存问题,它对于同一个工作也会表现得相似。现在,相同的工作几乎在几秒钟内完成,但随机阻塞。 3)没有使用其他形式的多线程/锁定机制

标签: apache-spark


【解决方案1】:

通过为每个执行程序分配一个核心,我解决了这个问题。如果我有超过 1 个核心的执行者,问题会再次出现。我还不明白为什么会发生这种情况,但对于那些有类似问题的人,他们可以试试这个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 2016-10-15
    相关资源
    最近更新 更多