"spark.yarn.executor.memoryOverhead"设置的值?

liy*_*ong 19 apache-spark spark-streaming apache-spark-sql apache-spark-mllib

那里,火花作业中"spark.yarn.executor.memoryOverhead"的值是应该分配给App的纱线还是仅仅是最大值?

Ind*_*ain 28

spark.yarn.executor.memoryOverhead
Run Code Online (Sandbox Code Playgroud)

只是最大值.目标是将OVERHEAD计算为实际执行程序内存的百分比,如RDD和DataFrames所使用的那样

--executor-memory/spark.executor.memory
Run Code Online (Sandbox Code Playgroud)

控制执行程序堆大小,但JVM也可以使用堆内存,例如对于实例化的字符串和直接字节缓冲区.

spark.yarn.executor.memoryOverhead 属性的值被添加到执行程序内存中,以确定每个执行程序对YARN的完整内存请求.默认为max(executorMemory*0.10,最小值为384).

执行程序将使用基于属性的内存分配spark.executor.memory加上定义的开销spark.yarn.executor.memoryOverhead

  • 默认情况下,spark.yarn.am.memoryOverhead是AM内存*0.10,最小值为384.这意味着如果我们将spark.yarn.am.memory设置为777M,则实际的AM容器大小将为2G.这是因为777 + Max(384,777*0.10)= 777 + 384 = 1161,默认的yarn.scheduler.minimum-allocation-mb = 1024,因此2GB容器将分配给AM. (4认同)