我正在寻找如何以及火花在 源代码中为每个执行程序分配内核。 是否有可能在独立的 群集模式下控制programmaticaly分配的内核?独立群集模式:spark如何分配spark.executor.cores?
问候, 利玛
我正在寻找如何以及火花在 源代码中为每个执行程序分配内核。 是否有可能在独立的 群集模式下控制programmaticaly分配的内核?独立群集模式:spark如何分配spark.executor.cores?
问候, 利玛
火花允许配置的选项,以通过对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
我没有经历过的源代码看起来详尽,但我认为这是执行程序内核在分配之前定义的源代码中的位置:
在单机模式下,您有以下选项:
一个。在启动集群时,您可以提到为spark应用程序分配了多少个cpu核心。这可以设置为env变量SPARK_WORKER_CORES或作为参数传递给shell脚本(-c或--cores)
b。应该小心(如果其他应用程序也共享像核心资源)不允许火花采取所有核心。这可以使用spark.cores.max参数进行设置。
c。您也可以通过--total-executor-cores <numCores>
火花外壳
欲了解更多信息,你可以看看here
好的,但如何星火确保执行人不使用超过spark.executor.cores吗? – ElfoLiNk
我想我不明白你的问题。只要您传递适当的配置参数,执行程序就不应该使用超过该数量的内核。这确实需要您信任Spark代码 – brycemcd