Spark Streaming documentation注释:
重要的是要记住Spark Streaming应用程序需要 分配足够的核心来处理接收的数据,以及 运行接收器
然后:
如果分配给应用程序的核心数小于或 等于输入DStreams / receiver的数量,然后是系统 将收到数据,但无法处理它们
这似乎令人惊讶,因为操作系统会安排CPU使应用程序进展,无论有多少CPU内核,除非它以某种方式阻止这样做。我的问题是:
答案 0 :(得分:0)
我刚刚意识到他们必须意味着“线索”。由核心'。如果没有足够的线程,它肯定会导致线程饥饿。与此相关,我可以创建一个具有更多核心的本地群集。可用的物理内核(例如,只有4个CPU内核的计算机上的"local[10]"
)。
答案 1 :(得分:-2)
不,它看起来文档是正确的,意味着物理CPU核心,而不是线程。 在4核机器上启动六个读取器将导致整个Spark Streaming应用程序停止,即使使用--local [10]。同时,同一个应用程序在具有8个核心的机器上运行完美。