为什么没有IllegalArgumentException,即使spark.executor.memory配置大于节点的RAM大小

时间:2016-11-28 08:42:48

标签: apache-spark

我正在使用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异常,但应用程序运行成功。为什么?

1 个答案:

答案 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?