0

Spark Streaming 文档说明:

重要的是要记住 Spark Streaming 应用程序需要分配足够的内核来处理接收到的数据,以及运行接收器

接着:

如果分配给应用程序的核数小于或等于输入 DStreams/接收器的数量,则系统将接收数据,但无法处理它们

这似乎令人惊讶,因为操作系统会调度 CPU 以使应用程序继续运行,无论那里有多少 CPU 内核,除非它以某种方式阻止这样做。我的问题是:

  • Spark 会做一些特殊的事情来阻止正常的 CPU 调度吗?
  • 如果是这样,其背后的理性是什么?
4

2 回答 2

0

我刚刚意识到他们必须通过“核心”来表示“线程”。如果没有足够的线程,肯定会导致线程饥饿。与此一致,我可以创建一个具有比可用物理内核更多“内核”的本地集群(例如"local[10]",在只有 4 个 CPU 内核的机器上)。

于 2014-12-22T16:35:35.503 回答
-2

不,看起来文档是正确的,并且是指物理 CPU 内核,而不是线程。在 4 核机器上启动 6 个读取器将导致整个 Spark Streaming 应用程序停止,即使使用 --local[10] 也是如此。同时,同样的应用程序在 8 核机器上完美运行。

于 2015-06-15T18:31:52.130 回答