如何在Spark集羣的work節點上啓動多個Executor?

如何在Spark集羣的work節點上啓動多個Executor?ide


默認狀況下,Spark集羣下的worker,只會啓動一個Executor只運行了一個 CoarseGrainedExecutorBackend 進程。Worker 經過持有 ExecutorRunner 對象來控制 CoarseGrainedExecutorBackend 的啓停。
那麼如何啓動多個executor呢?經過設置參數來解決:spa

一、設置每一個executor使用的cpu數爲4orm

spark.executor.cores 4

二、限制cpu使用數量,這裏會啓動3個executor(12/4)對象

spark.cores.max 12  

三、設置每一個executor的內存大小爲8g進程

spark.executor.memory 12g

以上設置將會啓動3個executor,每一個executor使用4cpu,12gRAM。 
總共佔用worker資源12cpu,36gRAM。
ip

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如下版本有時候會出現即便有資源也申請不到的狀況。源碼

相關文章
相關標籤/搜索