spark中memory_only和memory_and_disk缓存级别有什么区别?

ajsxfq5m  于 6个月前  发布在  Apache
关注(0)|答案(2)|浏览(100)

spark中memory_only和memory_and_disk缓存级别的行为有何不同?

ikfrs5lh

ikfrs5lh1#

正如文档中所解释的,效率方面的持久性级别:

Level                Space used  CPU time  In memory  On disk  Serialized
-------------------------------------------------------------------------
MEMORY_ONLY          High        Low       Y          N        N
MEMORY_ONLY_SER      Low         High      Y          N        Y
MEMORY_AND_DISK      High        Medium    Some       Some     Some
MEMORY_AND_DISK_SER  Low         High      Some       Some     Y
DISK_ONLY            Low         High      N          Y        Y

字符串
MEMORY_AND_DISKMEMORY_AND_DISK_SER溢出到磁盘,如果有太多的数据,以适应内存。

eoxn13cs

eoxn13cs2#

文件上说-
存储级别
意义
仅限内存
将RDD作为Java对象存储在JVM中。如果RDD不适合内存,则某些分区将不会被缓存,并且将在每次需要时动态重新计算。这是默认级别。
内存和磁盘
将RDD作为Java对象存储在JVM中。如果RDD不适合内存,则将不适合磁盘的分区存储起来,并在需要时从磁盘读取它们。
MEMORY_ONLY_SER
将RDD存储为序列化的Java对象(每个分区一个字节数组)。这通常比序列化的对象更节省空间,特别是在使用快速序列化器时,但读取时更占用CPU。
存储器和磁盘服务器
类似于MEMORY_ONLY_SER,但是将不适合内存的分区溢出到磁盘,而不是在每次需要时动态地重新计算它们。
仅限磁盘
只将RDD分区存储在磁盘上。
MEMORY_ONLY_2、MEMORY_AND_DISK_2等
与上面的级别相同,但是在两个集群节点上复制每个分区。
OFF_HEAP(实验)
将RDD以序列化格式存储在Tachyon中。与MEMORY_ONLY_SER相比,OFF_HEAP减少了垃圾收集开销,并允许执行器更小并共享内存池,这使得它在具有大型堆或多个并发应用程序的环境中具有吸引力。此外,由于RDD驻留在Tachyon中,执行器的崩溃不会导致丢失内存中的缓存。在此模式下,Tachyon中的内存是可重命名的。2因此,Tachyon不会尝试重新构建它从内存中驱逐的块。
这意味着对于Memory ONLY,spark将尝试始终将分区保留在内存中。如果某些分区无法保留在内存中,或者由于节点丢失而将某些分区从RAM中删除,spark将使用沿袭信息重新计算。在内存和磁盘级别,spark将始终保持分区计算和缓存。它将尝试保留在RAM中,但如果它不适合,则分区将溢出到磁盘。

相关问题