如何设置 Spark 执行器的数量?
2022-09-01 01:51:18
如何从 Java(或 Scala)代码量配置具有 和 的执行器量?我经常看到2个执行者。看起来不起作用,并且是关于不同的东西。SparkConfig
SparkContext
spark.default.parallelism
我只需要将执行器的数量设置为等于集群大小,但总是只有2个。我知道我的簇大小。如果这很重要,我会在YARN上运行。
如何从 Java(或 Scala)代码量配置具有 和 的执行器量?我经常看到2个执行者。看起来不起作用,并且是关于不同的东西。SparkConfig
SparkContext
spark.default.parallelism
我只需要将执行器的数量设置为等于集群大小,但总是只有2个。我知道我的簇大小。如果这很重要,我会在YARN上运行。
您也可以通过在 SparkConf 对象上设置参数“spark.executor.instances”和“spark.executor.cores”来以编程方式执行此操作。
例:
SparkConf conf = new SparkConf()
// 4 executor per instance of each worker
.set("spark.executor.instances", "4")
// 5 cores on each executor
.set("spark.executor.cores", "5");
第二个参数仅适用于 YARN 和独立模式。它允许应用程序在同一工作线程上运行多个执行器,前提是该工作线程上有足够的内核。
在 Spark 2.0+ 版本中
使用 spark 会话变量动态设置执行器的数量(从程序内部)
spark.conf.set("spark.executor.instances", 4)
spark.conf.set("spark.executor.cores", 4)
在上述情况下,在任何给定时间最多将执行16个任务。
其他选项是执行器的动态分配,如下所示 -
spark.conf.set("spark.dynamicAllocation.enabled", "true")
spark.conf.set("spark.executor.cores", 4)
spark.conf.set("spark.dynamicAllocation.minExecutors","1")
spark.conf.set("spark.dynamicAllocation.maxExecutors","5")
这样,您就可以让 spark 根据运行作业的处理和内存要求来决定分配执行器的数量。
我觉得第二个选项比第一个选项效果更好,并且被广泛使用。
希望这会有所帮助。