我读了一些关于Spark内存管理的文档。
\n\n在此页面上:如果我没有足够的内存,spark 会做什么?。它说:
\n\n\n\n\nSpark将分区存储在内存中的LRU缓存中。当缓存达到其大小限制时,它会从中逐出条目(即分区)。当分区具有 \xe2\x80\x9cdisk\xe2\x80\x9d 属性(即您的持久性级别允许在磁盘上存储分区)时,它将被写入 HDD 并且它消耗的内存将被释放,除非您请求它。当您请求它时,它将被读入内存,如果没有足够的内存,则缓存中的其他较旧条目将被逐出。如果您的分区没有 \xe2\x80\x9cdisk\xe2\x80\x9d 属性,则逐出仅意味着销毁缓存条目而不将其写入 HDD。
\n
那么如果内存不够的话分区会溢出到磁盘,那么Spark运行时怎么会出现内存不足的问题呢?
\n小智 5
Spark 只能逐出缓存的 RDD 块。也就是说,如果存在应用程序标记为存储在内存中的 RDD。因此,可以清除存储器的存储部分,但不能清除执行部分。Spark 内存管理指出
执行内存是指用于洗牌、连接、排序和聚合中的计算的内存。
以及他们是否可以被驱逐
由于实现的复杂性,存储可能不会驱逐执行。
如果JVM可用的内存量小于所需的执行内存,必然会发生OOM。
归档时间: |
|
查看次数: |
3062 次 |
最近记录: |