【问题标题】:Number of Executors in Spark Local ModeSpark 本地模式下的 Executor 数量
【发布时间】:2017-06-16 13:18:55
【问题描述】:

所以我正在本地模式下运行 spark 作业。 我使用以下命令运行作业

spark-submit --master local[*] --driver-memory 256g --class main.scala.mainClass target/scala-2.10/spark_proj-assembly-1.0.jar 0 large.csv 100 outputFolder2 10

我在具有 32 个内核和 256GB RAM 的机器上运行它。创建conf时,我使用以下代码

val conf = new SparkConf().setMaster("local[*]").setAppName("My App")

现在我在本地模式下,Spark 在单个 JVM 中运行所有内容,但这是否意味着它只启动一个驱动程序并将其用作执行程序。在我的时间线中,它显示添加了一个执行程序驱动程序。 当我进入执行器页面时,只有一个分配了 32 个核心的执行器

这是默认行为吗?我期待 spark 会为每个核心启动一个执行器,而不是一个执行器来获取所有核心。如果有人可以解释这种行为,那就太好了

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    这是默认行为吗?

    如您所说,在本地模式下,您的驱动程序 + 执行程序是在单个 JVM 进程中创建的。你看到的不是一个执行者,它是你的工作有多少核心的视图。通常在本地模式下运行时,您应该只在 executors 视图中看到驱动程序。

    如果您查看LocalSchedulerBackend 的代码,您会看到以下注释:

    /**
     * Used when running a local version of Spark where the executor, backend, and master all run in
     * the same JVM. It sits behind a [[TaskSchedulerImpl]] and handles launching tasks on a single
     * Executor (created by the [[LocalSchedulerBackend]]) running locally.
    

    在同一个 JVM 实例中,我们有一个单独的执行器来处理所有任务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 2019-03-04
      相关资源
      最近更新 更多