具有多个执行程序的Spark独立配置

时间:2016-10-11 20:51:43

标签: apache-spark pyspark

我尝试设置一个独立的Spark 2.0服务器来并行处理分析功能。为此,我想让一个工作人员拥有多个执行者。

我正在使用:

  • Standalone Spark 2.0
  • 8个核心
  • 24gig RAM
  • windows server 2008
  • pyspark(虽然这似乎无关)

这仅用于纯粹的概念验证目的,但我希望有8个执行器,每个核心一个。

我试图关注这个主题的其他主题,但由于某种原因,它不适合我。 IE: Spark Standalone Number Executors/Cores Control

我的配置如下:

CONF \火花defaults.conf

spark.cores.max = 8
spark.executor.cores = 1

我试图改变我的spark-env.sh文件无济于事。相反,它发生的是它表明我的1名工人只有1个执行者。正如您在下面所看到的,它仍然显示独立的1个执行程序,其中包含8个内核。

enter image description here

2 个答案:

答案 0 :(得分:4)

我相信你混淆了本地和独立模式:

  • 本地模式是一种开发工具,其中所有进程都在单个JVM中执行。通过将master设置为locallocal[*]local[n],可以在本地模式下启动应用程序。 spark.executor.coresspark.executor.cores不适用于本地模式,因为只有一个嵌入式执行程序。
  • 独立模式需要独立的Spark cluster。它需要一个主节点(可以使用SPARK_HOME/sbin/start-master.sh脚本启动)和至少一个工作节点(可以使用SPARK_HOME/sbin/start-slave.sh脚本启动)。

    SparkConf应使用主节点地址来创建(spark://host:port)。

答案 1 :(得分:2)

首先需要配置spark独立群集,然后设置要运行的每个spark应用程序所需的资源量。

要配置群集,您可以尝试:

在conf / spark-env.sh中:

Set the SPARK_WORKER_INSTANCES = 10

确定每个节点的Worker实例数(#Executors)(默认值仅为1)

Set the SPARK_WORKER_CORES = 15

一个Worker可以使用的核心数(默认值:所有核心,您的情况是36)

Set SPARK_WORKER_MEMORY = 55g

可以在一台计算机(工作节点)上用于运行Spark程序的内存总量。 将此配置文件复制到同一文件夹上的所有工作节点 通过在sbin中运行脚本来启动集群(sbin / start-all.sh,...) 由于您有5个工作人员,使用上述配置,您应该在主Web界面上看到5个(工人)* 10(每个工人的执行者)= 50个活动执行者(默认为http://localhost:8080

在独立模式下运行应用程序时,默认情况下,它将获取群集中所有可用的执行程序。您需要显式设置运行此应用程序的资源量:例如:

val conf = new SparkConf() .setMaster(...) .setAppName(...) .set("spark.executor.memory", "2g") .set("spark.cores.max", "10")