我正在使用spark2.0.1并在本地模式下进行测试。
我有一个类似以下的驱动程序应用程序:
object AnnoSp {
def main(args: Array[String]) {
val spark = SparkSession.builder
.config("spark.executor.memory", "2000g")
.config("spark.driver.memory", "4000g")
.master("local[*]")
.config("spark.app.name", "Anno BDG")
.appName("Anno BDG")
.getOrCreate()
}
}
测试节点的RAM只有4G,我已经将spark.executor.memory设置为4000g。当我将此应用程序提交给spark时,我预计会有IllegalArgumentException异常,但应用程序运行成功。为什么?
答案 0 :(得分:1)
spark.driver.memory
和{{1}}表示java应用程序的-Xmx值,并且无需检查,因为群集中的每个节点都可以具有不同的内存量,因此应用程序必须ssh到每个节点并且检查RAM /交换。 (同样在纱线中你不知道你的执行器/驱动程序将在哪个节点上启动)
至于为什么可以将它设置得比你的节点高? - > Why am I able to set -Xmx to a value greater than physical and virtual memory on the machine on both Windows and Solaris?