【问题标题】:Spark on Mesos is much slower than localMesos 上的 Spark 比本地慢得多
【发布时间】:2016-05-24 00:09:06
【问题描述】:

我正在使用 Mesos 的 16 CPU 的 64 GB RAM 主机上运行 Spark Streaming 进程。

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

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

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

本地:

金币:

(1)

(2)

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

任何线索将不胜感激。

【问题讨论】:

    标签: apache-spark spark-streaming mesos


    【解决方案1】:

    Spark 可以在 Mesos 上以两种模式运行:coarse-grained(默认)和fine-grained(参见documentation)。

    coarse-grained 模式下,Spark 在 Mesos 分配给它的每台机器上只启动一个执行程序。在此任务中,Spark 会启动其他小任务。它的好处是启动开销较低(在您的情况下,您不想更改此模式)。

    您能否更具体地介绍一下您的流媒体工作?是 CPU、磁盘还是网络受限?如果您运行一些 Spark 示例,您可以轻松比较性能。

    如果您的任务是 CPU 密集型任务,您可以考虑设置 spark.mesos.extra.cores。默认情况下,Spark 会尝试获取 Mesos 提供的所有内核。因此,如果该集群上没有其他任务正在运行,那应该不是问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-25
      • 2015-12-30
      • 2020-10-18
      • 2016-10-29
      • 1970-01-01
      • 2020-12-27
      • 2017-01-22
      • 1970-01-01
      相关资源
      最近更新 更多