【问题标题】:Standalone Manager Vs. Yarn Vs. Mesos独立管理器与。纱线对比梅索斯
【发布时间】:2026-01-05 23:40:01
【问题描述】:

在 3 节点 Spark/Hadoop 集群上,哪个调度程序(管理器)将有效地工作? 目前我正在使用独立管理器,但对于每个 spark 作业,我必须明确指定所有资源参数(例如:核心、内存等),这是我想避免的。 我也尝试过 Yarn,但它的运行速度比独立管理器慢 10 倍。

Mesos 会有帮助吗?

集群详情: Spark 1.2.1 和 Hadoop 2.7.1

【问题讨论】:

  • [免责声明:不是 Yarn 专家] 我认为这在很大程度上取决于您计划添加到集群中的未来工作负载。 Mesos 是一个通用调度器,而 Yarn 更适合 Hadoop 工作负载。
  • 查看相关的 SE 问题:*.com/questions/28664834/…

标签: hadoop apache-spark hadoop-yarn mesos


【解决方案1】:

Apache Spark 在以下集群模式下运行

  • 本地
  • 独立
  • 纱线
  • 梅索斯
  • Kubernetes
  • 游牧民族

本地模式用于在操作系统上运行 Spark 应用程序。此模式对于 Spark 应用程序的开发和测试很有用。

standalone、Yarn、Mesos 和 Kubernetes 等模式都是分布式环境。在分布式环境中,资源管理对于管理计算资源非常重要。所以要高效地管理计算资源,我们需要好的资源管理系统或者Resource Schedular。

独立适用于小型 spark 集群,但不适用于较大的集群(在集群节点中运行 spark daemons(master + slave)会产生开销)。这些守护进程需要专用资源。因此不建议将独立用于更大的生产集群。 Standalone 仅支持 Spark 应用程序,它不是通用集群管理器。在需要运行各种工作负载的企业环境中,Spark 独立集群管理器不是一个好的选择。

YARN 和 Mesos 模式的情况下,Spark 作为应用程序运行,没有守护进程开销。所以我们可以使用 YARN 或 Mesos 来获得更好的性能和可扩展性。 YARN 和 Mesos 都是通用的分布式资源管理,它们支持各种工作负载,如 MapReduce、Spark、Flink、Storm 等......以及容器编排。它们非常适合运行大型企业生产集群。

在 YARN 和 Mesos 之间,YARN 专为 Hadoop 工作负载而设计,而 Mesos 则专为各种工作负载而设计。 YARN 是应用程序级调度程序,Mesos 是操作系统级调度程序。 如果您已经在运行 Hadoop 集群 (Apache/CDH/HDP),最好使用 YARN。如果是一个全新的项目,最好使用 Mesos(Apache,Mesosphere)。还有一项规定是使用名为 Apache Myriad 的项目以共置方式使用它们。

Kubernetes - 用于自动部署、扩展和管理容器化应用程序的开源系统。因此它用于以容器化方式运行 Spark 应用程序。大多数云供应商,如谷歌、微软、亚马逊,都在云中提供 Kubernetes 平台即服务。我们还可以拥有 on-prim K8S 集群以容器化方式运行 Spark 应用程序。这里的容器是 Docker 或 CGroups/Linux Container。

Nomad - 它是另一个用于运行 Spark 应用程序的开源系统。 Spark 项目并未正式支持此集群管理器作为集群管理器。

在以上所有模式中,Apache Mesos 拥有更好的资源 管理能力。

请查看此链接,其中包含来自 Yarn 与 Mesos 的专业知识的详细解释。 http://www.quora.com/How-does-YARN-compare-to-Mesos

【讨论】:

  • 您认为从 Standalone 迁移到 Mesos(或 Yarn)的节点数量是多少?
【解决方案2】:

在 3 节点集群上,我只会使用独立管理器,额外进程的开销不会得到回报

【讨论】:

  • 其实未来会有100多个节点,这里只是测试环境,我只想在这里测试所有的东西。
【解决方案3】:

从 Spark 3.x.x 开始,有几种集群管理器模式:

  • 独立 - 一个简单的集群管理器包含在 Spark 中,它使 轻松设置集群。
  • Apache Mesos – 一个通用集群管理器,也可以运行 Hadoop MapReduce 和服务应用程序。
  • Hadoop YARN – Hadoop 2 中的资源管理器。
  • Kubernetes – 开源 用于自动化部署、扩展和管理的系统 容器化应用程序。

更多关于https://spark.apache.org/docs/latest/cluster-overview.html#cluster-manager-types

【讨论】: