Apache spark “的价值”;火花、纱线、执行器、记忆头”;背景
在带有纱线的火花作业中,Apache spark “的价值”;火花、纱线、执行器、记忆头”;背景,apache-spark,apache-spark-sql,spark-streaming,apache-spark-mllib,Apache Spark,Apache Spark Sql,Spark Streaming,Apache Spark Mllib,在带有纱线的火花作业中,spark.Thread.executor.memoryOverhead的值应分配给App还是仅分配给最大值 spark.yarn.executor.memoryOverhead 只是最大值。目标是将开销计算为RDD和数据帧使用的实际执行器内存的百分比 --executor-memory/spark.executor.memory 控制执行器堆的大小,但JVM也可以使用堆外的一些内存,例如用于内部字符串和直接字节缓冲区 spark.warn.executor.memo
spark.Thread.executor.memoryOverhead
的值应分配给App还是仅分配给最大值
spark.yarn.executor.memoryOverhead
只是最大值。目标是将开销计算为RDD和数据帧使用的实际执行器内存的百分比
--executor-memory/spark.executor.memory
控制执行器堆的大小,但JVM也可以使用堆外的一些内存,例如用于内部字符串和直接字节缓冲区
spark.warn.executor.memoryOverhead的值
属性添加到执行器内存中,以确定每个执行器对纱线的完整内存请求。默认为最大值(executorMemory*0.10,最小值为384)
执行器将使用基于
spark.executor.memory
属性的内存分配,加上spark.Thread.executor.memoryOverhead定义的开销
谢谢您的回复。我仍然想知道,我已经将Thread的内存应用于我的工作,然后我设置了'spark.Thread.executor.memoryOverhead'的值,这是否意味着它将为我的工作添加额外内存?默认情况下,spark.Thread.am.memoryOverhead为am memory*0.10,最小值为384。这意味着如果我们将spark.warn.am.memory设置为777M,实际的am容器大小将为2G。这是因为777+Max(384777*0.10)=777+384=1161,并且默认的warn.scheduler.minimum allocation mb=1024,所以2GB容器将分配给AM。