Apache spark 实际执行器内存与我设置的执行器内存不匹配
我有一个spark2.0.1集群,有一个主服务器(slaver1)和两个辅助服务器(slaver2,slaver3),每台机器都有2GB的RAMApache spark 实际执行器内存与我设置的执行器内存不匹配,apache-spark,Apache Spark,我有一个spark2.0.1集群,有一个主服务器(slaver1)和两个辅助服务器(slaver2,slaver3),每台机器都有2GB的RAM /bin/spark shell--主控spark://slaver1:7077 --执行器存储器500m 当我检查web中的执行器内存时(slaver1:4040/executors/)。我发现它是110MB。 您所说的内存实际上是存储内存Spark将内存[称为Spark memory]分为两个区域,第一个区域是存储内存,第二个区域是执行内存 总内存
/bin/spark shell--主控spark://slaver1:7077 --执行器存储器500m
当我检查web中的执行器内存时(slaver1:4040/executors/)。我发现它是110MB。
您所说的内存实际上是存储内存Spark将内存[称为
Spark memory
]分为两个区域,第一个区域是存储内存
,第二个区域是执行内存
总内存可以用这个公式计算
(“Java堆”-“保留内存”)*spark.Memory.fraction
为了让您概括了解存储内存,此池用于存储ApacheSpark缓存数据和临时空间序列化数据“展开”。此外,所有“广播”变量都作为缓存块存储在那里
如果您想检查提供的总内存,可以在开始时转到Spark UISpark Master Ip:8080
[默认端口],您可以找到名为内存
的部分,该部分是Spark使用的总内存
谢谢您所说的内存实际上是存储内存Spark将内存[称为
Spark memory
]分为两个区域,第一个区域是存储内存
,第二个区域是执行内存
总内存可以用这个公式计算
(“Java堆”-“保留内存”)*spark.Memory.fraction
为了让您概括了解存储内存,此池用于存储ApacheSpark缓存数据和临时空间序列化数据“展开”。此外,所有“广播”变量都作为缓存块存储在那里
如果您想检查提供的总内存,可以在开始时转到Spark UISpark Master Ip:8080
[默认端口],您可以找到名为内存
的部分,该部分是Spark使用的总内存
感谢Spark 1.6版本中的,内存将根据下图进行划分 执行和存储内存之间没有硬边界。所需的存储内存比从执行内存和反之亦然。这个 执行和存储内存由(ExecutorMemory-300Mb)*spark.memory.fraction给出 在您的情况下(500-300)*).75=150mb在分配的执行器内存中将有3%到5%的错误 300Mb是保留内存 用户内存=(ExecutorMemory-300)*.(1-spark.memory.fraction)。 在您的情况下(500-300)*).25=50mb
从Spark 1.6版开始,内存根据下图进行划分 执行和存储内存之间没有硬边界。所需的存储内存比从执行内存和反之亦然。这个 执行和存储内存由(ExecutorMemory-300Mb)*spark.memory.fraction给出 在您的情况下(500-300)*).75=150mb在分配的执行器内存中将有3%到5%的错误 300Mb是保留内存 用户内存=(ExecutorMemory-300)*.(1-spark.memory.fraction)。 在您的情况下(500-300)*).25=50mb
此公式???Java堆(500MB)*spark.memory.fraction(默认值为0.6)*spark.memory.storyfraction(默认值为0.5)=150MB此公式???[Java堆(500MB)-保留内存(300MB)]*spark.Memory.fraction(默认值为0.5)=100MB≈ 110MB在我的问题中,这个公式来自spark版本1.6,可能会有一些变化。你的答案对这个公式很有帮助???Java堆(500MB)*spark.memory.fraction(默认值0.6)*spark.memory.storyfraction(默认值0.5)=150MB这个公式???[Java堆(500MB)-保留内存(300MB)]*spark.Memory.fraction(默认值为0.5)=100MB≈ 110MB在我的问题中,这个公式来自spark 1.6版,可能有点变化。你的回答对我很有帮助