2016-10-11 34 views
1

我试图设置独立的Spark 2.0服务器来并行处理分析功能。要做到这一点,我想有一个单独的工人与多个执行者。具有多个执行程序的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个执行器的8个内核的独立版本。

enter image description here

回答

1

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

  • 本地模式是一个开发工具,所有工序都在单个JVM中执行。通过将主设置为local,local[*]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)。

0

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

为了配置群集,你可以试试这个:

在的conf /火花ENV。SH:

Set the SPARK_WORKER_INSTANCES = 10

,其确定每个节点工人实例(#Executors)的数目(它的缺省值仅1)

Set the SPARK_WORKER_CORES = 15

数是以一个工人可以使用芯(默认:所有的核心,你的情况是36)

Set SPARK_WORKER_MEMORY = 55g

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

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

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