400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

如何实现SparkExecutor内存管理

本篇文章为大家展示了如何实现Spark Executor内存管理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

成都创新互联公司专注于醴陵网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供醴陵营销型网站建设,醴陵网站制作、醴陵网页设计、醴陵网站官网定制、小程序定制开发服务,打造醴陵网络公司原创品牌,更为您提供醴陵网站排名全网营销落地服务。

前言

Spark 的内存管理是内存分布式引擎中的一个重要角色,了解内存管理机制和原理,才能更好地做优化。

内容

1、静态内存管理(Spark 1.6.x版本前的策略)

静态内存管理图示——堆内

如何实现Spark Executor内存管理
Unroll 的源码参考:https://github.com/apache/spark/blob/branch-1.6/core/src/main/scala/org/apache/spark/storage/MemoryStore.scala#L249

静态内存管理图示——堆外

2、统一内存管理(Spark 1.6.x以后的策略)

统一内存管理图示——堆内
如何实现Spark Executor内存管理

统一内存管理图示——堆外

其中最重要的优化在于动态占用机制,其规则如下: 1\设定基本的存储内存和执行内存区域(spark.storage.storageFraction 参数),该设定确定了双方各自拥有的空间的范围 双方的空间都不足时,则存储到硬盘;若己方空间不足而对方空余时,可借用对方的空间;(存储空间不足是指不足以放下一个完整的 Block) 2\执行内存的空间被对方占用后,可让对方将占用的部分转存到硬盘,然后"归还"借用的空间 3\存储内存的空间被对方占用后,无法让对方"归还",因为需要考虑 Shuffle 过程中的很多因素,实现起来较为复杂

动态占用机制图示
如何实现Spark Executor内存管理

凭借统一内存管理机制,Spark 在一定程度上提高了堆内和堆外内存资源的利用率,降低了开发者维护 Spark 内存的难度,但并不意味着开发者可以高枕无忧。譬如,所以如果存储内存的 空间太大 或者说 缓存的数据 过多,反而会导致频繁的全量垃圾回收,降低任务执行时的性能,因为缓存的 RDD 数据通常都是长期驻留内存的。所以要想充分发挥 Spark 的性能,需要开发者进一步了解存储内存和执行内存各自的管理方式和实现原理。

统一内存管理还可以简化
(1)Reserved Memory

(2)User Memory

(3)Spark Memory

上述内容就是如何实现Spark Executor内存管理,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


分享题目:如何实现SparkExecutor内存管理
本文路径:http://mbwzsj.com/article/jgepcj.html

其他资讯

让你的专属顾问为你服务