Spark内存管理概览

翻译自Spark官网文档,版本:2.3.0

spark内存管理概览

Spark很大一部分内存用于storage和execution,即存储和执行任务。execution memory指的是在shuffle,join,sorts,aggregation操作中使用的内存,storage memory指的是用于整个集群缓存数据和传播中间数据的内存。

spark中storage和execution分享一个统一的区域(M),当没有execution memory被使用,storage可以占用全部可用内存,反之亦然。storage占用execution memory时且有必要时execution可以驱逐storage,直到storage memory使用量低于一个阈值(R)。也就是说R描述了一个小于M的缓存区域,绝不会被驱逐。execution占用storage memory时因为实现复杂所以storage不会驱逐execution。

spark有两个相关配置项:

  1. saprk.memory.fraction,即M,默认为0.6,剩余的40%是为用户数据结构,spark内部数据,防止Out of memory准备的
  2. saprk.memory.storageFraction,即R,默认为0.5。

确定内存消耗量

从这里可以了解到,从spark web ui上的Executors页面中的Storage Memory部分看到的数据是storage部分的内存。如何知道某个RDD占用多大内存空间,最直接的方法是将RDD放进缓存中,然后从spark web ui查看Storage Memory即可。

原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/93

(0)
geekgaogeekgao博主
上一篇 2018年3月20日
下一篇 2018年6月25日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

GitHub
分享本页
返回顶部

Warning: error_log(/usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/#log/log-1202.txt): failed to open stream: No such file or directory in /usr/local/lighthouse/softwares/wordpress/wp-content/plugins/spider-analyser/spider.class.php on line 2900