Apache spark 介观星体上的火花比局地星体慢得多

Apache spark 介观星体上的火花比局地星体慢得多,apache-spark,spark-streaming,mesos,Apache Spark,Spark Streaming,Mesos,我正在一台16 CPU的64 GB内存主机上运行一个Spark流媒体进程,该主机使用Mesos 当我使用Mesos作为集群管理器运行它时(通过设置--mastermesos://leader.mesos:5050)它的运行速度比在本地模式下运行时慢得多(--master local[4]) 我找不到原因,也不知道。我注意到的一件事是,有一项特定任务在Mesos上比在Local上花费的时间要多得多 奇怪的是(也许这应该是问题的标题)任务本身需要6秒,而它的阶段(只有一个阶段)不到一秒钟。见附图(M

我正在一台16 CPU的64 GB内存主机上运行一个Spark流媒体进程,该主机使用Mesos

当我使用Mesos作为集群管理器运行它时(通过设置
--mastermesos://leader.mesos:5050
)它的运行速度比在本地模式下运行时慢得多(
--master local[4]

我找不到原因,也不知道。我注意到的一件事是,有一项特定任务在Mesos上比在Local上花费的时间要多得多

奇怪的是(也许这应该是问题的标题)任务本身需要6秒,而它的阶段(只有一个阶段)不到一秒钟。见附图(Mesos(1)和(2))。怎么会?一份工作不等于它各部分的总和吗

本地:

Mesos:

(一)

(二)

另一个注意事项:我确实在另一个Mesos星团上运行了完全相同的Spark Streaming过程,它运行的时间相当长,与上面描述的本地模式非常相似。我能想到的唯一区别是这个集群有多个主机,Spark运行时有2个执行器,而不是1个。(在Mesos上,我找不到在同一台主机上运行多个executor的方法)。这可能是原因吗


任何线索都将不胜感激。

Spark可以以两种模式在Mesos上运行:
粗粒度
(默认)和
细粒度
(请参阅)

粗粒度
模式下,Spark在Mesos分配给它的每台机器上只启动一个执行器。在该任务中,Spark启动其他小任务。它有降低启动开销的好处(在您的情况下,您不想更改此模式)

你能更具体地谈谈你的流媒体工作吗?是CPU、磁盘还是网络限制?如果运行一些Spark示例,您可以轻松地比较性能

如果你的任务是CPU密集型的,你可以考虑设置<代码> Spk.MeSo.Ext.Cype 。默认情况下,Spark尝试获取Mesos提供的所有内核。因此,如果该集群上没有其他任务运行,那么这应该不是问题