Spark Standalone、YARN 和本地模式有啥区别?

Posted

技术标签:

【中文标题】Spark Standalone、YARN 和本地模式有啥区别?【英文标题】:What is the difference between Spark Standalone, YARN and local mode?Spark Standalone、YARN 和本地模式有什么区别? 【发布时间】:2017-02-22 01:14:42 【问题描述】:

Spark 独立:

在这种模式下,我意识到您在本地机器上运行您的主节点和工作节点。

这是否意味着您在我的本地计算机上运行了一个 YARN 实例?自从我安装 Spark 时,它附带了 Hadoop,并且通常 YARN 也附带了 Hadoop,对吗?在这种模式下,我基本上可以模拟一个完整集群的较小版本。

Spark 本地模式:

这是我也很困惑的部分。要在这种模式下运行它,我会使用val conf = new SparkConf().setMaster("local[2]")

在这种模式下,它不使用任何类型的资源管理器(如 YARN)对吗?喜欢它只是以您提供给"local[2]"\ 的线程数运行 Spark 作业?

【问题讨论】:

【参考方案1】:

您对 Hadoop YARN 和 Spark 感到困惑。

YARN 是一种软件重写,可以解耦 MapReduce 的资源 数据处理的管理和调度能力 组件,使 Hadoop 能够支持更多样化的处理 方法和更广泛的应用。

随着 YARN 的引入,Hadoop 已经开放,可以在平台上运行其他应用程序。

简而言之,YARN 是“可插入数据并行框架”。

阿帕奇星火

Apache spark 是一个批处理交互式流框架。火花有一个 “可插入持久存储”。 Spark 可以与任何持久层一起运行。

为了让 spark 运行,它需要资源。在独立模式下,您启动 worker 和 spark master 和持久层可以是任何 - HDFS、文件系统、cassandra 等。在 YARN 模式下,您要求 YARN-Hadoop 集群管理资源分配和簿记。

当您将 master 用作 local[2] 时,您请求 Spark 使用 2 个内核并在同一个 JVM 中运行驱动程序和工作程序。在本地模式下,所有与 Spark 作业相关的任务都在同一个 JVM 中运行。

所以 Standalone 和 local 模式之间的唯一区别是,在 Standalone 中,您为 worker 和 spark master 定义“容器”以在您的机器上运行(因此您可以有 2 个 worker,并且您的任务可以分布在 JVM 中)那两个工人?)但在本地模式下,您只是在本地机器的同一个 JVM 中运行所有内容。

【讨论】:

另外,如果我将 Spark 作业提交到 YARN 集群(使用本地机器上的 spark 提交),SparkContext 对象如何知道 Hadoop 集群要连接到哪里? 当前,我使用 Spark-submit 并将 --deploy-mode 指定为 cluster。但是 SparkContext 是如何知道 Hadoop 集群在哪里运行 HDFS 数据节点上的 spark 应用程序的呢? Spark 是否有一些配置可以指定 Hadoop 集群的位置,并且每当您实例化 SparkContext 的实例时,它会因为该配置文件而知道集群的位置? 确保 HADOOP_CONF_DIR 或 YARN_CONF_DIR 指向包含 Hadoop 集群(客户端)配置文件的目录。这些配置用于写入 HDFS 并连接到 YARN ResourceManager。此目录中包含的配置将分发到 YARN 集群,以便应用程序使用的所有容器使用相同的配置。 spark.apache.org/docs/latest/running-on-yarn.html 。 ***.com/questions/34333384/…【参考方案2】:

本地模式 将本地模式视为使用单个 JVM 在笔记本电脑上执行程序。它可以是 java、scala 或 python 程序,您已在其中定义和使用 spark 上下文对象、导入的 spark 库和驻留在系统中的已处理数据。

纱线 实际上,Spark 程序旨在处理跨机器存储的数据。执行器处理存储在这些机器上的数据。我们需要一个实用程序来监视执行程序并管理这些机器(集群)上的资源。为此,Hadoop 有自己的资源管理器。因此,当您在 HDFS 上运行 spark 程序时,您可以利用 hadoop 的资源管理器实用程序,即 yarn。 Hadoop 属性是从 spark-env.sh 或 bash_profile 中设置的“HADOOP_CONF_DIR”获取的

Spark 独立版 Spark 发行版也带有自己的资源管理器。当您的程序使用 spark 的资源管理器时,执行模式称为 Standalone。此外,Spark 允许我们通过在 $SPARK_HOME/conf 目录下配置属性文件来创建分布式主从架构。默认情况下,它被设置为单节点集群,就像 hadoop 的 psudo-distribution-mode 一样。

【讨论】:

本地模式是唯一不需要依赖 Spark 安装的模式吗?这意味着,在本地模式下,您可以只使用 Spark jars 而无需提交到集群。在独立模式下也可以吗? 在独立模式下,我们提交到集群并在 --master 选项中指定 spark master url 我们可以从 jars 和导入而不是安装 spark 来启动集群,以便独立运行吗?

以上是关于Spark Standalone、YARN 和本地模式有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

详解Spark运行模式(local+standalone+yarn)

详解Spark运行模式(local+standalone+yarn)

详解Spark运行模式(local+standalone+yarn)

SparkSpark的Standalone模式安装部署

Spark的运行模式--Local和Standalone

Spark 学习笔记之 Standalone与Yarn启动和运行时间测试