gpt4 book ai didi

apache-spark - Spark 任务卡在 RUNNING

转载 作者:行者123 更新时间:2023-12-04 22:18:32 29 4
gpt4 key购买 nike

我正在尝试在我的 Yarn 集群上运行 Spark ML 管道(从 JDBC 加载一些数据,运行一些转换器,训练模型),但每次运行它时,我的执行者中有一对 - 有时是一个,有时是 3 或 4 个被困在运行他们的第一个任务集(对于他们的 3 个核心中的每个任务集来说是 3 个任务),而其余的则正常运行,一次检查 3 个。

在 UI 中,您会看到如下内容:
Spark web UI screenshot

到目前为止我观察到的一些事情:

  • 当我设置我的执行器使用 1 个内核和 spark.executor.cores(即一次运行 1 个任务)时,问题不会发生;
  • 卡住的执行器似乎总是那些必须将一些分区重新分配给它们才能运行任务的执行器;
  • 卡住的任务最终会被另一个实例成功推测执行;
  • 偶尔,单个任务会卡在一个正常的执行器中,但是其他 2 个内核会继续正常工作;
  • 卡住的 executor 实例看起来一切正常:CPU 大约为 100%,有足够的内存可用,JVM 进程处于事件状态,Spark 或 Yarn 都没有记录任何异常,它们仍然可以从驱动程序接收指令,例如“放弃这个任务,其他人已经推测性地执行了它”——尽管出于某种原因,他们没有放弃它;
  • 那些 executors 永远不会被驱动程序杀死,所以我想他们继续发送他们的心跳就好了;

  • 关于可能导致这种情况或我应该尝试什么的任何想法?

    最佳答案

    TLDR :在你责备 Spark 之前,确保你的代码是线程安全的和无竞争条件的。

    弄清楚了。对于后代:使用线程不安全的数据结构(可变 HashMap)。由于同一台机器上的执行程序共享一个 JVM,这导致了锁定单独线程/任务的数据竞争。

    结果:当您拥有 spark.executor.cores > 1(您可能应该拥有)时,请确保您的代码是线程安全的。

    关于apache-spark - Spark 任务卡在 RUNNING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48348624/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com