blog.csdn.net
Open in
urlscan Pro
123.129.227.45
Public Scan
URL:
https://blog.csdn.net/stable_zl/article/details/134148280?spm=1001.2014.3001.5501
Submission: On December 21 via manual from US — Scanned from US
Submission: On December 21 via manual from US — Scanned from US
Form analysis
1 forms found in the DOM<form id="commentRewardForm">
<div class="ipt-box">
<label for="txtName">祝福语</label>
<div class="ipt-btn-box">
<input type="text" name="name" id="txtName" autocomplete="off" maxlength="50">
<a class="btn-ipt btn-random"></a>
</div>
<p class="notice">请填写红包祝福语或标题</p>
</div>
<div class="ipt-box">
<label for="txtSendAmount">红包数量</label>
<div class="ipt-txt-box">
<input type="text" name="sendAmount" maxlength="4" id="txtSendAmount" placeholder="请填写红包数量(最小10个)" autocomplete="off">
<span class="after-txt">个</span>
</div>
<p class="notice">红包个数最小为10个</p>
</div>
<div class="ipt-box">
<label for="txtMoney">红包总金额</label>
<div class="ipt-txt-box error">
<input type="text" name="money" maxlength="5" id="txtMoney" placeholder="请填写总金额(最低5元)" autocomplete="off">
<span class="after-txt">元</span>
</div>
<p class="notice">红包金额最低5元</p>
</div>
<div class="balance-info-box">
<label>余额支付</label>
<div class="balance-info"> 当前余额<span class="balance">3.43</span>元 <a href="https://i.csdn.net/#/wallet/balance/recharge" class="link-charge" target="_blank">前往充值 ></a>
</div>
</div>
<div class="opt-box">
<div class="pay-info"> 需支付:<span class="price">10.00</span>元 </div>
<button type="button" class="ml-auto btn-cancel">取消</button>
<button type="button" class="ml8 btn-submit" disabled="true">确定</button>
</div>
</form>
Text Content
* 博客 * 下载 * 学习 * 社区 * C知道 * GitCode * InsCode * 会议 搜索 登录 登录后您可以: * 免费复制代码 * 关注/点赞/评论/收藏 * 下载海量资源 * 写文章/发动态/加入社区 立即登录 会员中心 消息 历史 创作中心 发布 SPARK内存管理 stable_阿甘 已于 2023-11-23 08:48:22 修改 阅读量231 收藏 点赞数 文章标签: spark 大数据 于 2023-10-31 20:14:39 首次发布 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/stable_zl/article/details/134148280 版权 引入 1. 既然有溢写机制了,为什么还会出现OOM呢? 2. 这两个内存是干什么用的呢? set spark.executor.memory = 4g; set spark.executor.memoryOverhead = 3g; 3. 直接用JVM的垃圾回收做内存管理可以吗 一、内存管理机制要解决的问题 大数据处理框架如MapReduce、Spark等, 需要在内存中处理大量的数据,内存消耗要比一般的软件高。但是因为内存空间有限,所以如何搞笑管理和使用内存成为重要问题。Spark的内存管理机制需要解决如下问题。 1.1 内存消耗来源多种多样,难以管理 我们首先定义内存消耗是什么,MapReduce中的map/reduce是以JVM进程的方式运行,因此MR应用内存消耗是指的是进程消耗的内存。而对于Spark来说,其task以线程的方式运行,因此我们主要关注单个线程的内存消耗。 Spark运行时内存消耗主要包括三个方面: * 框架本身在处理数据时需要消耗内存,如Spark在Shuffle Write/Read过程中使用类似于HashMap和Array的数据结构进行聚合和排序 * 数据缓存,Spark需要将重复使用的数据缓存到内存中避免重复计算 * 用户代码消耗的内存,如用户可以在reduceByKey(func)、mapPartitions(func)的func中自己定义数据结构,暂存中间处理结果。 由于内存空间有限,如何对这些缓存数据和计算过程中的数据进行统一管理,以及如何平衡数据计算与缓存的内存消耗等这些解决内存空间不足的问题都具有挑战性。 举例 def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("wordCount").setMaster("local[*]") val sc = new SparkContext(conf) //获取文件 val textFile: RDD[String] = sc.textFile("/Users/zhaolei/IdeaProjects/spark-demo/src/resource/wordcount.txt") //切割 val word: RDD[String] = textFile.flatMap( line => { val list = line.split(" ") list } ) //映射成 (word, one) val word_one: RDD[(String, Int)] = word.map(word => (word, 1)) //统计每个 word 的个数 val word_count: RDD[(String, Int)] = word_one.reduceByKey(_ + _) word_count.foreach(x => println(x._1, x._2)) word_count.cache() } * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20AI助手 1.2 内存消耗动态变化、难以预估 Spark运行时的内存消耗与多种因素有关 * Shuffle机制中的内存用量与Shuffle数据量、分区个数(我理解是hashshuffle才会相关)、用户自定义的聚合函数等相关,并且难以预估 * 用户代码的内存用量与func的计算逻辑、输入数据量有关,也难以预估 这些内存消耗来源产生的内存对象生命周期不同,如何分配大小合适的内存空间,何时对这些对象进行回收,也具有挑战性 1.3 TASK之间共享内存,导致内存竞争 task之间共享内存,导致内存竞争。在MapReduce中,框架为每个task启动一个单独的JVM运行,task之间没有内存竞争。在Spark中,多个task以线程的方式运行在同一个Executor JVM中,task之间还存在内存共享和竞争,如何平衡内存共享和内存竞争的问题也具有挑战性。 三、内存管理模型 分析完内存管理需要解决的问题后,我们来看下Spark解决这些问题的方法及其内存管理模型。 3.1 静态内存管理模型 由于内存消耗包含三种来源且内存空间是连续的,所以,一个简单的解决办法是将内存划分为三个分区,每个分区负责存储一种消耗来源,并根据经验确定三者的比例。 Spark1.6以前采用了这个方法,用静态内存管理模型将内存空间划分为如下三个分区: 1. 数据缓存空间。约占60%的内存空间,用于存储RDD缓存数据、广播数据、task的一些计算结果。 2. 框架执行空间。约占20%的内存空间,用于存储Shuffle机制中的中间数据。 3. 用户代码空间。约占20%的内存空间,用于存储用户代码的中间结果、Spark框架本身产生的内部对象,以及Executor JVM自身的一些内存对象等。 这种静态划分方式的优点是各个分区的角色分明、实现简单,缺点是分区之间存在“硬”界限,难以平衡三者的内存消耗。例如GroupBy()、join()等应用需要较大的框架执行空间,用于存放Shuffle机制中的中间数据,并不需要太多的数据缓存空间。再例如,某个应用不需要缓存数据,但是用户代码空间复杂度很高,因此需要较大的用户代码空间,容易出现诸如内存不足、内存溢出之类的错误。为了缓解这个问题,Spark允许用户自己设定三者的空间比例,但对于普通用户来说很难确定一个合适的比例,而且内存用量在运行过程中不断变化,并不存在一个最优的静态比例,也就容易造成内存资源浪费、内存溢出等问题。 3.2 统一内存管理模型 为了能够平衡用户代码、Shuffle机制中的中间数据,以及数据缓存的内存空间需求,最理想的办法是为三者分配一定的内存配额,并且在运行时根据三者的实际内存用量,动态调整配额比例。 缓存数据和Shuffle机制中的中间数据可以被监控,但用户代码的内存消耗很难被监控和估计。所以,优化后的内存管理主要是根据监控得到的内存用量信息,来动态调节用于Shuffle机制和用于缓存内存空间的。 根据以上思想,Spark从1.6版本开始,设计实现了更高效的统一内存管理模型,仍然将内存划分为3个分区:系统保留空间、用户代码空间和框架内存空间,这三个空间的大小都是固定的。具体如下 3.2.1 系统保留内存 系统保留内存使用较小的空间存储Spark框架产生的内部对象(如Spark Executor对象,TaskMemoryManager对象等内部对象),系统保留内存大小默认时300MB。 3.2.2 用户代码空间 用户代码空间被用于存储用户代码生成的对象,如map()、mapPartition()等函数中中用户自定义的数据结构。用户代码空间默认约为40%的内存空间。 3.2.3 框架内存空间 框架内存空间分为框架执行空间和数据缓存空间。总大小为spark.memory.fraction(default * 0.6) * (heap - Reserved memory)。约为60%的内存空间。两者共享这个内存空间,其中一方空间不足时可以动态向另一方借用。具体地,当数据缓存空间不足时,可以向框架执行空间借用其空闲空间,后续当框架执行需要更多空间时,数据缓存空间需要“归还”借用的空间,这时候Spark可能将部分缓存数据移除来归还空间。同样,当框架执行空间不足时,可以向数据缓存空间借用空间,如果借用以后依然不够用, 会触发Shuffle溢写。注意,框架执行空间借用缓存空间后,并不会被动归还,所以如果缓存空间被占满后,新来的缓存数据只能放到磁盘上。 思考:为什么框架执行空间不会被动归还内存? 因为溢写的数据一定会被重新从磁盘读入内存,而缓存数据在后续可能并不需要,二者带来的性能开销不一样。 因为监控不到用户内存使用了多少,所以用户内存可能会超出自己的使用范围,如果用户内存侵犯了框架内存,而框架内存此时利用率又比较高,就会触发内存溢出。 到这里,我们就了解了分区模型,接下来我们进一步研究每个分区空间内的具体使用和回收机制,以及task之间的竞争情况。 四、SPARK框架内存消耗与管理 4.1 内存共享与竞争 因为Executor中存在多个task,因此框架内存空间实际上是由多个task(Spark中的task名为ShuffleMap Task或ResultTask)共享的。在运行过程中,Executor中活跃的task数目在[0, ExecutorCores]内变化。Spark会尝试确保每个任务获得合理的内存份额,而不是某些任务首先增加到大量内存,然后导致其他任务重复溢出到磁盘。 如果有N个任务,它确保每个任务在溢出之前可以获取至少 1 / 2N的内存,最多 1/N。因为N是动态变化的,所以task可以分配到的内存也在变化。如最初一个Executor中有4个活跃的task,那么每个task可以使用的最小内存是 1/8,最大内存为 1 /4 。当完成2个task后,剩余的两个task最少使用的内存是 1 / 4,最大使用内存为 1/ 2。 这个与Flink里slot配置死的内存有区别,我理解原因是因为Flink是流程序,不存在“完成”这个概念。 4.2 框架执行空间内存使用 框架执行空间主要用于Shuffle阶段,在这个过程中需要对数据进行partition、sort、merge、fetch、aggregate等操作,执行这些操作需要类似于数组、HashMap之类的结构。而且也可能把数据序列化后存到堆外,具体怎么使用内存,依据于采取的Shuffle方式。 之前我们分析过Shuffle的实现方式,这里再重新回顾,并且分析其使用的内存。 4.2.1 SHUFFLE WRITE阶段内存消耗与管理 Shuffle Write的实现具体参照:https://blog.csdn.net/stable_zl/article/details/128678127 Shuffle Wirte可根据是否需要map端聚合,是否需要按照Key进行排序,分为4种方式 1. 无map()端聚合、无排序且partition个数不超过200,采用的BypassMergeSortShuffle-Writer方式,Spark根据partitionId,将record依次输出到不同的buffer中,每当buffer被填满,就将record溢写到磁盘上的分区中。 消耗内存就是32KB的buffer 2. 无map()端聚合、无排序且partition个数大于200的情况,采用Serialized ShuffleWriter。(输出文件会按照partitoinId排序) 可以在堆内,也可以在堆外,默认在堆外,通过指定spark.executor.memoryOverhead来设置其大小。 join都是采用的这种操作,常见问题: * 我们在数据量大的时候经常会发现报错说程序在创建一个超大的数组,这个数组就是利用堆外内存机制的时候在堆内创建的指针数组,这个数组没有溢写操作,所以很容易报溢出,如下图(这是我的一个group by + cube的操作,然后再做join,cube出来的数据量太大引起的): * 堆外内存不够,爆Overhead内存溢出。 3. 无map()端聚合但需要排序的情况,采用基于数组的SortShuffleWriter(输出文件会按照partitionId+key排序) 内存消耗是堆内的数组 4. 有map端聚合的情况,采用AppendOnlyMap的SortShuffleWriter(会按照partitionId排序) 内存消耗是堆内的AppendOnlyMap,groupByKey采用的是这种方式 4.2.2 SHUFFLE READ阶段内存消耗与管理 注:ShuffleRead里用的都是堆内内存,没有堆外 1. 无聚合且无排序的情况,采用基于buffer获取数据并直接处理的方式,典型的操作是partitionBy 内存消耗是一个小的buffer 2. 无聚合但是需要排序的情况,采用基于数组的排序方式,典型的操作是sortByKey。 内存消耗是堆内的数组 3. 有聚合的情况,采用基于AppendOnlyMap的聚合方式,典型的操作是reduceByKey。 内存消耗是堆内的AppendOnlyMap 4.3 数据缓存空间内存使用 缓存空间主要存放3种数据:RDD缓存数据、广播数据、以及task的计算结果。如下图所示 和框架执行空间相同的是,缓存空间也可以同时使用堆内和堆外,而且有task共享。不同的是,每个task的存储空间并没有被限制1/N。在缓存时如果发现数据缓存空间不够,且不能从框架执行空间借用空间时,就只能采用缓存替换或者直接丢掉数据的方式。 确定要放弃本次机会? 福利倒计时 : : 立减 ¥ 普通VIP年卡可用 立即使用 stable_阿甘 关注 关注 * 0 点赞 * 踩 * 0 收藏 觉得还不错? 一键收藏 * 0 评论 * 分享 复制链接 分享到 QQ 分享到新浪微博 扫一扫 * 举报 举报 SparkSql内存专题——Spark on YARN Executor整体内存理解 xiaoluobutou的专栏 03-09 1081 不管是聚合、还是join; 不管它们占的空间有多大; 不管它们是int类型的,还是一个大json串; 不管实现整个聚合的计算用的是HashAgg 、是ObjectHashAgg 或者是SortAgg; 不管实现整个JOIN的计算用的是SortMergeJoin 、是ShuffleHashJoin 、还是BroadcastHashJoin... Spark executor.memory power0405hf的专栏 12-04 6039 参考:1.Setting spark.executor.memory problem2.How to set Spark executor memory?3.How to set Apache Spark Executor memorySetting spark.executor.memory problem问题: 在local mode下配置环境出错://出错代码: val conf = new 参与评论 您还未登录,请先 登录 后发表或查看评论 ...On Spark性能调优_spark.driver.memoryoverhead 12-19 文章浏览阅读306次。我们公司yarn node节点的可用资源配置为:单台node节点可用资源数:核数33cores、内存110G。Hive on Spark任务的基础配置,主要配置对象包括:Executor和Driver内存,Executor配额,任务并行度。Spark系统架构。_spark.driver.memoryoverhead Spark内存管理详解 12-20 文章浏览阅读1.6k次,点赞2次,收藏12次。Spark 内存管理堆内内存和堆外内存作为一个 JVM 进程,Executor 的内存管理建立在 JVM(最小为六十四分之一,最大为四分之一)的内存管理之上,此外spark还引入了堆外内存(不在JVM中的内存),在spark中是指不属于该executor的内存。 Spark 异常总结及解决办法 onway_goahead的博客 07-30 3169 前言 总结Spark开发中遇到的异常及解决办法,之前也写过几篇,之所以不再一个异常写一篇博客,是因为现在Spark用的比较熟悉了一些,觉得没必要把异常信息写那么详细了,所以就把异常总结在一篇博客里了,这样既能备忘也方便查找。 1、之前的几篇 spark-submit报错:Exception in thread "main" java.sql.SQLException:No suitable driver hive查询报错:java.io.IOException:org.apache.parque 在解决实际问题中学习Spark配置项 最新发布 上尤流苏 09-20 340 因此,你需要根据应用处理的数据量和集群规模来合理调整这个值。但同时,增大这个参数也会生成更多的文件,增加存储和管理文件的开销。配置介绍: 这个参数用于设置Spark executor的堆外内存,也就是除了JVM堆内存之外的内存。配置介绍: 这个参数设置的是shuffle的并行度,也即shuffle读/写的文件数量。在涉及到shuffle的操作中,这个参数决定了生成的shuffle文件的数量。适用场景: 如果你的Spark应用需要处理大量的数据且你发现应用因垃圾回收(GC)导致越来越慢,你可能需要提高。 【Spark精讲】Spark内存管理_execution.externalappendonlyunsaferowa... 12-16 文章浏览阅读1.6k次,点赞25次,收藏26次。Spark精讲,Spark内存管理,静态内存管理,统一内存管理,Java运行时数据区,Java堆,垃圾回收机制_execution.externalappendonlyunsaferowarray: reached spill threshold of 4096 spark.executor.memoryOverhead 12-12 文章浏览阅读1.2w次,点赞2次,收藏17次。前言本文隶属于专栏《Spark 配置参数详解》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构和参考文献请见 Spark 配置参数详解正文spark.executor.memoryOverhead在 YARN,K8S 部署模 Spark中executor-memory参数详解 wisgood的专栏 09-05 3万+ Spark中executor-memory参数详解 spark.executor.memoryOverhead Shockang的博客 07-24 1万+ 前言 本文隶属于专栏《Spark 配置参数详解》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见 Spark 配置参数详解 正文 spark.executor.memoryOverhead 在 YARN,K8S 部署模式下,container 会预留一部分内存,形式是堆外,用来保证稳定性,主要存储nio buffer,函数栈等一些开销 这部分内存,你不用管堆外还是堆内,开发者用不到,spark也用不到, 所以不用关心,千万不指望调这个参数去提升性 ...问题处理记录_spark.executor.memoryoverhead 12-18 文章浏览阅读2.7k次。1.tried to access methos com.google.common.base.Stopwatch.<init>()V from class org.apache2.IDEA运行Spark代码异常 -> Error:scalac: IO error while decoding \Demo2.scala with UTF-83.Spark SQL错误提示(You need ... setting useSSL=false, [CDH] Spark 属性、内存、CPU相关知识梳理_spark.task.cpus 12-14 文章浏览阅读1.8k次。version:2.4.0-cdh6.3.0文章目录spark properties常用配置spark taskspark task 使用的cpu核数spark architecturespark memoryspark on yarn问题1:什么情况下使用spark.executor.memoryOverhead问题2:什么情况下使用spark.executor.memory小总结:归 Spark Executor内存管理 aijiudu的博客 10-23 3646 我们都知道 Spark 能够有效的利用内存并进行分布式计算,其内存管理模块在整个系统中扮演着非常重要的角色。为了更好地利用 Spark,深入地理解其内存管理模型具有非常重要的意义,这有助于我们对 Spark 进行更好的调优;在出现各种内存问题时,能够摸清头脑,找到哪块内存区域出现问题。 首先我们知道在执行 Spark 的应用程序时,Spark 集群会启动 Driver 和 Executor 两种... Spark内存资源分配——spark.executor.memory等参数的设置方法 qq_28658621的博客 01-19 2万+ Spark内存资源分配——spark.executor.memory等参数的设置方法 spark.yarn.executor.memoryOverhead和spark.memory.offHeap.size 及spark.executor.extraJavaOptions:-XX:Ma diyicedaan的专栏 11-20 466 spark.yarn.executor.memoryOverhead 由操作系统分配,不受jvm控制,用于shuffle 数据传输 spark.executor.extraJavaOptions -XX:MaxDirectMemorySize 是jvm控制的,在日志中看到java.lang.OutOfMemoryError: Direct buffer memory报错时,需要调大此参数 spark.executor.memoryOverhead 是spark中广义的堆外内存,for yarn资源 Spark 内存管理 嘻哈吼嘿呵的博客 09-29 149 在执行 Spark 的应用程序时, Spark 集群会启动 Driver 和 Executor 两种JVM 进程,前者为主控进程,负责创建 Spark 上下文,提交 Spark 作业(Job),并将作业转化为计算任务(Task),在各个 Executor 进程间协调任务的调度,后者负责在工作节点上执行具体的计算任务,并将结果返回给 Driver,同时为需要持久化的 RDD 提供存储功能。由于 Dr... spark 内存管理 weixin_43006131的博客 02-05 304 spark 内存管理 Spark 作为一个以擅长内存计算为优势的计算引擎,内存管理方案是其非常重要的模块; Spark的内存可以大体归为两类:execution(运行内存)和storage(存储内存),前者包括shuffles、joins、sorts和aggregations所需内存,后者包括cache和节点间数据传输所需内存; 在Spark 1.5和之前版本里,运... Spark Executor 内存管理 u011409486的博客 07-22 1034 本文主要对 Executor 的内存管理进行分析,下文中的 Spark 内存均特指 Executor 的内存 堆内内存和堆外内存 作为一个 JVM 进程,Executor 的内存管理建立在 JVM 的内存管理之上,此外spark还引入了堆外内存(不在JVM中的内存),在spark中是指不属于该executor的内存。 堆内内存:由 JVM 控制,由GC(垃圾回收)进行内存回收,堆内内存的大小,由 Spark 应用程序启动时的 executor-memory 或 spark.executor.memory 参 Spark 运行内存溢出问题:memoryOverhead issue in Spark 热门推荐 凝眸伏笔的博客 05-18 3万+ 当用Spark和Hadoop做大数据应用的时候,你可能会反复的问自己怎么解决这一的一个问题:“Container killed by YARN for exceeding memory limits. 16.9 GB of 16 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead”这个错... spark executor出现OOM内存溢出问题解决方案 祁东握力的博客 01-31 3932 转载链接:https://blog.csdn.net/wypblog/article/details/104935712/ Executor OOM类错误 (错误代码 137、143等) 该类错误一般是由于 Heap(M2)已达上限,Task 需要更多的内存,而又得不到足够的内存而导致。因此,解决方案要从增加每个 Task 的内存使用量,满足任务需求 或 降低单个 Task 的内存消耗量,从而使现有内存可以满足任务运行需求两个角度出发。因此有如下解决方案: 法一:增加单个task的内存使用量 . pyspark写入mysql内存溢出_Spark开发-Spark内存溢出原因以及解决方式 weixin_30128407的博客 02-02 1377 Dpark内存溢出Spark内存溢出堆内内存溢出堆外内存溢出堆内内存溢出java.lang.OutOfMemoryError: GC overhead limit execeededjava.lang.OutOfMemoryError: Java heap space具体说明Heap size JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设... spark参数说明及优化 盛源的博客 05-26 1993 合理并行度 set spark.default.parallelism=72; set spark.sql.shuffle.partitions=72; 资源动态分配 set spark.dynamicAllocation.enabled=false; 推测机制 set spark.speculation=true; set spark.speculation.interval=50000; set spark.speculation.quantile=0.95; s... spark内存管理 qq_36382679的博客 08-23 111 * 关于我们 * 招贤纳士 * 商务合作 * 寻求报道 * 400-660-0108 * kefu@csdn.net * 在线客服 * 工作时间 8:30-22:00 * 公安备案号11010502030143 * 京ICP备19004658号 * 京网文〔2020〕1039-165号 * 经营性网站备案信息 * 北京互联网违法和不良信息举报中心 * 家长监护 * 网络110报警服务 * 中国互联网举报中心 * Chrome商店下载 * 账号管理规范 * 版权与免责声明 * 版权申诉 * 出版物许可证 * 营业执照 * ©1999-2024北京创新乐知网络技术有限公司 stable_阿甘 CSDN认证博客专家 CSDN认证企业博客 码龄6年 暂无认证 172 原创 5万+ 周排名 2万+ 总排名 8万+ 访问 等级 2244 积分 134 粉丝 188 获赞 27 评论 253 收藏 私信 关注 Ads by 热门文章 * 解决Hive运行hql提示Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 8890 * hive参数设置 6079 * flume 对接 kafka 报错: Error while fetching metadata with correlation id 35 {=INVALID_TOPIC_EXCEPTION} 3973 * 4 BP 神经网络 2495 * hive metastore 和 hiveServer2 遇到的问题 2445 分类专栏 * Redis 2篇 * ClickHouse 2篇 * 湖格式 2篇 * Flink 16篇 * Spark 11篇 * Hadoop 15篇 * JVM 14篇 * 设计模式 23篇 * hive 13篇 * 数据仓库 1篇 * Scala 4篇 * 面试 * 实训项目——数据运营系统 1篇 * 数据结构 7篇 * Java 16篇 * 大数据案例 4篇 * Flume 4篇 * 操作系统 9篇 * C语言 8篇 * 数据分析 1篇 * 深度学习导论 4篇 * Storm 1篇 * Kafka 2篇 最新评论 * 1.Hudi基本概念 菜菜的大数据开发之路: 本文灰常得不错( ̄ˇ ̄),博主多大了? 这么厉害!(= ̄ω ̄=) * 解决Hive运行hql提示Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient m0_74080297: 请问你找到问题了吗? * 解决Hive运行hql提示Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient stable_阿甘: 查下日志吧,日志里详细些 * 解决Hive运行hql提示Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient rujing789: 有用。昨天还行,今天就不行了,很难理解为什么 * 3 HDFS CSDN-Ada助手: 哇, 你的文章质量真不错,值得学习!不过这么高质量的文章, 还值得进一步提升, 以下的改进点你可以参考下: (1)提升标题与正文的相关性;(2)使用更多的站内链接。 大家在看 * 探索Apache Doris:实时分析的现代数据仓库 468 * HDLBits训练2 * STM32通过TB6612驱动直流电机 * RK3588 , mpp硬编码rgb, 保存MP4视频文件. 235 * SAAS版 财务系统 云记账平台源码 财务程序 最新文章 * 4.Redis哨兵 * 3.Redis复制 * 2.Redis持久化 2024年6篇 2023年70篇 2022年2篇 2021年12篇 2020年80篇 2019年4篇 目录 1. 引入 2. 一、内存管理机制要解决的问题 3. 1. 1.1 内存消耗来源多种多样,难以管理 2. 1.2 内存消耗动态变化、难以预估 3. 1.3 task之间共享内存,导致内存竞争 4. 三、内存管理模型 5. 1. 3.1 静态内存管理模型 2. 3.2 统一内存管理模型 3. 1. 3.2.1 系统保留内存 2. 3.2.2 用户代码空间 3. 3.2.3 框架内存空间 6. 四、Spark框架内存消耗与管理 7. 1. 4.1 内存共享与竞争 2. 4.2 框架执行空间内存使用 3. 1. 4.2.1 Shuffle Write阶段内存消耗与管理 2. 4.2.2 Shuffle Read阶段内存消耗与管理 4. 4.3 数据缓存空间内存使用 Ads by 目录 1. 引入 2. 一、内存管理机制要解决的问题 3. 1. 1.1 内存消耗来源多种多样,难以管理 2. 1.2 内存消耗动态变化、难以预估 3. 1.3 task之间共享内存,导致内存竞争 4. 三、内存管理模型 5. 1. 3.1 静态内存管理模型 2. 3.2 统一内存管理模型 3. 1. 3.2.1 系统保留内存 2. 3.2.2 用户代码空间 3. 3.2.3 框架内存空间 6. 四、Spark框架内存消耗与管理 7. 1. 4.1 内存共享与竞争 2. 4.2 框架执行空间内存使用 3. 1. 4.2.1 Shuffle Write阶段内存消耗与管理 2. 4.2.2 Shuffle Read阶段内存消耗与管理 4. 4.3 数据缓存空间内存使用 分类专栏 * Redis 2篇 * ClickHouse 2篇 * 湖格式 2篇 * Flink 16篇 * Spark 11篇 * Hadoop 15篇 * JVM 14篇 * 设计模式 23篇 * hive 13篇 * 数据仓库 1篇 * Scala 4篇 * 面试 * 实训项目——数据运营系统 1篇 * 数据结构 7篇 * Java 16篇 * 大数据案例 4篇 * Flume 4篇 * 操作系统 9篇 * C语言 8篇 * 数据分析 1篇 * 深度学习导论 4篇 * Storm 1篇 * Kafka 2篇 评论 被折叠的 条评论 为什么被折叠? 到【灌水乐园】发言 查看更多评论 添加红包 祝福语 请填写红包祝福语或标题 红包数量 个 红包个数最小为10个 红包总金额 元 红包金额最低5元 余额支付 当前余额3.43元 前往充值 > 需支付:10.00元 取消 确定 成就一亿技术人! 领取后你会自动成为博主和红包主的粉丝 规则 hope_wisdom 发出的红包 实付元 使用余额支付 点击重新获取 扫码支付 钱包余额 0 抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。 余额充值 确定取消 举报 选择你想要举报的内容(必选) * 内容涉黄 * 政治相关 * 内容抄袭 * 涉嫌广告 * 内容侵权 * 侮辱谩骂 * 样式问题 * 其他 原文链接(必填) 请选择具体原因(必选) * 包含不实信息 * 涉及个人隐私 请选择具体原因(必选) * 侮辱谩骂 * 诽谤 请选择具体原因(必选) * 搬家样式 * 博文样式 补充说明(选填) 取消 确定 下载APP 程序员都在用的中文IT技术交流社区 公众号 专业的中文 IT 技术社区,与千万技术人共成长 视频号 关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停! 客服 返回顶部 word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1 mmMwWLliI0fiflO&1 登录后您可以享受以下权益: * 免费复制代码 * 和博主大V互动 * 下载海量资源 * 发动态/写文章/加入社区 ×立即登录 Do Not Sell or Share My Personal Information OPT OUT OF THE SALE OR SHARING OF PERSONAL INFORMATION We won't sell or share your personal information to inform the ads you see. You may still see interest-based ads if your information is sold or shared by other companies or was sold or shared previously. Dismiss Opt out