如何在Spark集群的work节点上启动多个Executor?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Spark集群的work节点上启动多个Executor?相关的知识,希望对你有一定的参考价值。

如何在Spark集群的work节点上启动多个Executor?


默认情况下,Spark集群下的worker,只会启动一个Executor只运行了一个 CoarseGrainedExecutorBackend 进程。Worker 通过持有 ExecutorRunner 对象来控制 CoarseGrainedExecutorBackend 的启停。
那么如何启动多个executor呢?通过设置参数来解决:

1、设置每个executor使用的cpu数为4

spark.executor.cores 4

2、限制cpu使用数量,这里会启动3个executor(12/4)

spark.cores.max 12  

3、设置每个executor的内存大小为8g

spark.executor.memory 12g

以上设置将会启动3个executor,每个executor使用4cpu,12gRAM。 
总共占用worker资源12cpu,36gRAM。

Spark1.6的源码部分为:

protected final String EXECUTOR_MEMORY = "--executor-memory";
protected final String TOTAL_EXECUTOR_CORES = "--total-executor-cores";
protected final String EXECUTOR_CORES = "--executor-cores";

也可以在提交任务的时候添加:

SparkSubmit --class com.dyq.spark.MyClass --master:spark://master:7077  --total-executor-cores 12 --executor-cores 24 --executor-memory 12g

tip

在使用过程中发现如果使用spark1.5以下版本有时候会出现即使有资源也申请不到的情况。


最后再附上SparkSubmit的所有参数表:

SparkSubmitOptionParser {

  String = String = String = String = String = String =  String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String = String =


以上是关于如何在Spark集群的work节点上启动多个Executor?的主要内容,如果未能解决你的问题,请参考以下文章

如何在多个机器上搭建celery的集群环境

Spark 在具有多个应用程序的工作人员上运行了多少 JVM

spark架构原理

Spark RDD在Spark中的地位和作用如何?

在集群上运行Spark应用的详细过程

在集群上运行Spark