2016-06-08 67 views

回答

0

火花允许配置的选项,以通过对SparkConf类的.set方法传递。

下面是一些Scala代码,设置了一个新的火花配置:

new SparkConf() 
    .setAppName("App Name") 
    .setMaster('local[2]') 
    .set("spark.executor.cores", "2") 

文档有关的不同配置选项:

http://spark.apache.org/docs/1.6.1/configuration.html#execution-behavior

我没有经历过的源代码看起来详尽,但我认为这是执行程序内核在分配之前定义的源代码中的位置:

https://github.com/apache/spark/blob/d6dc12ef0146ae409834c78737c116050961f350/core/src/main/scala/org/apache/spark/scheduler/cluster/ExecutorData.scala

+0

好的,但如何星火确保执行人不使用超过spark.executor.cores吗? – ElfoLiNk

+0

我想我不明白你的问题。只要您传递适当的配置参数,执行程序就不应该使用超过该数量的内核。这确实需要您信任Spark代码 – brycemcd

0

在单机模式下,您有以下选项:

一个。在启动集群时,您可以提到为spark应用程序分配了多少个cpu核心。这可以设置为env变量SPARK_WORKER_CORES或作为参数传递给shell脚本(-c或--cores)

b。应该小心(如果其他应用程序也共享像核心资源)不允许火花采取所有核心。这可以使用spark.cores.max参数进行设置。

c。您也可以通过--total-executor-cores <numCores>火花外壳

欲了解更多信息,你可以看看here

相关问题