gpt4 book ai didi

hadoop - 在 Yarn 集群上运行时 Spark 批处理未完成

转载 作者:可可西里 更新时间:2023-11-01 15:24:24 25 4
gpt4 key购买 nike

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

到目前为止,我已经成功地使用 spark-submit 将应用程序提交到 Yarn 集群。我可以看到接收器任务正确启动并从数据库(Couchbase Server 5.0)中获取大量记录,我还可以看到记录被分成批处理。

问题
当我查看 Spark Web UI 上的流统计信息时,我可以看到我的批处理从未被处理过。我看到有 0 条记录的批处理处理并完成,但是当有记录的批处理开始处理时,它永远不会完成。有一次它甚至卡在了 0 条记录的批处理上。

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

有谁知道哪里出了问题?非常感谢任何有关如何解决此问题的建议。

更多信息
Spark 应用程序的主类是从 this example 构建的(第一个)来自 Couchbase Spark Connector 文档结合 this example使用 Spark 文档中的检查点。

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

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

下面是一些 Web UI 的屏幕截图

执行器概述

Spark 作业概述

带资源的节点概览

容量调度程序概述

最佳答案

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

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

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

关于hadoop - 在 Yarn 集群上运行时 Spark 批处理未完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48915522/

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