Hadoop 为缓存的RDD分配了多少内存?
我有一个5个工作节点集群,每个集群有6 GB内存(Spark executor内存设置为4608 GB) 我的内存一直不足,Spark告诉我,我的一个执行者试图使用超过5.0 GB的内存。如果每个执行器都有5GB的内存,那么我的整个集群之间应该有25GB的内存Hadoop 为缓存的RDD分配了多少内存?,hadoop,apache-spark,caching,memory,emr,Hadoop,Apache Spark,Caching,Memory,Emr,我有一个5个工作节点集群,每个集群有6 GB内存(Spark executor内存设置为4608 GB) 我的内存一直不足,Spark告诉我,我的一个执行者试图使用超过5.0 GB的内存。如果每个执行器都有5GB的内存,那么我的整个集群之间应该有25GB的内存 ExecutorLostFailure (executor 4 exited caused by one of the running tasks) Reason: Container killed by YARN for exceed
ExecutorLostFailure (executor 4 exited caused by one of the running tasks)
Reason: Container killed by YARN for exceeding memory limits. 5.0 GB of 5.0
GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
在我的spark应用程序开始时,当我查看存储选项卡中的一个rdd时(此时它是缓存中唯一的rdd),我看到:
这似乎表明每个节点只有大约2.5 GB的可用内存。在我的spark应用程序出现内存不足错误之前,“存储”选项卡也从未接近显示25 GB的缓存RDD
如何确定为缓存的RDD分配了多少内存?提交作业时,可以指定参数
spark.memory.storageFraction
。默认值为0.5
因此,在您为执行器分配5G内存的情况下,2.5G将保留用于缓存,剩余的2.5G将用于执行
发件人:
spark.memory.storageFraction
不受逐出影响的存储内存量,表示为s留出的区域大小的一小部分公园,记忆,分数。该值越高,可用于执行的工作内存越少,任务溢出到磁盘的频率越高。建议将其保留为默认值。有关详细信息,请参见
RDD Name Storage Level Cached Partitions Fraction Cached Size in Memory Size on Disk
myRDD Memory Serialized 1x Replicated 20 100% 3.2 GB 0.0 B
Host On Heap Memory Usage Off Heap Memory Usage Disk Usage
Node 1 643.5 MB (1931.3 MB Remaining) 0.0 B (0.0 B Remaining) 0.0 B
Master 0.0 B (366.3 MB Remaining) 0.0 B (0.0 B Remaining) 0.0 B
Node 2 654.8 MB (1920.0 MB Remaining) 0.0 B (0.0 B Remaining) 0.0 B
Node 3 644.2 MB (1930.6 MB Remaining) 0.0 B (0.0 B Remaining) 0.0 B
Node 4 656.2 MB (1918.6 MB Remaining) 0.0 B (0.0 B Remaining) 0.0 B
Node 5 652.4 MB (1922.4 MB Remaining) 0.0 B (0.0 B Remaining) 0.0 B