【问题标题】:Spark batches does not complete when running on Yarn cluster在 Yarn 集群上运行时 Spark 批处理未完成
【发布时间】:2018-08-01 14:26:10
【问题描述】:

设置场景
我正在努力使 Spark 流应用程序(带有 Scala 的 Spark 2.2.1)在 Yarn 集群(Hadoop 2.7.4)上运行。

到目前为止,我设法使用 spark-submit 将应用程序提交到 Yarn 集群。我可以看到receiver任务正确启动并从数据库(Couchbase Server 5.0)中获取了很多记录,我还可以看到记录被分成了批次。

问题
但是,当我查看 Spark Web UI 上的 Streaming Statistics 时,我可以看到我的批次从未被处理过。我已经看到有 0 条记录的批次处理并完成,但是当有记录的批次开始处理时,它永远不会完成。有一次它甚至被困在一个有 0 条记录的批次上。

我什至尝试尽可能简化 SteamingContext 上的输出操作。但是仍然使用非常简单的输出操作 print() 我的批次永远不会被处理。日志不显示任何警告或错误。

有谁知道可能出了什么问题?任何有关如何解决此问题的建议将不胜感激。

更多信息
Spark 应用程序的主类是由 Couchbase Spark 连接器文档中的 this example(第一个)和 Spark 文档中的带有检查点的 this example 构建的。

现在我有 3230 个活动批次(3229 个排队和 1 个处理)和 1 个已完成批次(有 0 条记录),应用程序已经运行了 4 小时 30 分钟......每 5 秒添加另一个批次.

如果我查看执行程序的“线程转储”,我会看到很多 WAITING、TIMED WAITING 和一些 RUNNABLE 线程。该列表将填满 3 个屏幕截图,所以我只会在需要时发布。

您将在下面找到一些 Web UI 的屏幕截图

执行者概述

Spark 工作概览

带资源的节点概览

容量调度程序概述

【问题讨论】:

    标签: hadoop apache-spark spark-streaming couchbase hadoop-yarn


    【解决方案1】:

    根据屏幕截图,您有 2 个内核,其中 1 个用于驱动程序,另一个用于接收器。您没有进行实际处理的核心。请增加核心数,然后重试。

    参考:https://spark.apache.org/docs/latest/streaming-programming-guide.html#input-dstreams-and-receivers

    如果您使用基于接收器(例如套接字、Kafka、Flume 等)的输入 DStream,则将使用单线程运行接收器,不留任何线程来处理接收到的数据。因此,在本地运行时,始终使用“local[n]”作为主 URL,其中 n > 要运行的接收器数量(有关如何设置主服务器的信息,请参阅 Spark 属性)。

    【讨论】:

    • 谢谢。我今天会尝试一下,如果它解决了我的问题,请告诉您。
    • 实际上 nodemanager 有 3 个内核可用。显然 1 是为操作系统/调度程序保留的。剩下 2 个 vCore,但它们都用于 2 个容器。
    • 我使用这些参数运行 spark-submit。 --master yarn --deploy-mode cluster --driver-cores 1 --driver-memory 2G --num-executors 2 --executor-cores 1 --executor-memory 1G 所以我缺少的核心是司机?
    • 如果您查看执行程序 UI,您可以看到有两个执行程序,其中一个是驱动程序进程。即使您请求了 2 个执行器,YARN 也只分配了一个。您的 YARN 集群中有多少个节点?如果您的 Yarn 集群只有一个节点,那么您将需要 4 个内核用于 2 个执行程序/1 个用于驱动程序,1 个用于 OS/Scheduler。目前,您只获得一个具有 1 个核心 + 1 个驱动程序的执行器。
    • 另外,spark 只会在(注册资源/总预期资源)>= "spark.scheduler.minRegisteredResourcesRatio" 时提交任务。 YARN 中 spark 的 ""spark.scheduler.minRegisteredResourcesRatio" 为 0.8,这意味着 Spark 仅在 YARN 提供至少 80% 的请求资源时才会提交任务。因此请确保请求的资源至少为 YARN 可以提供的资源的 80%提供。
    猜你喜欢
    • 2017-04-16
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多