国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

大数据计算框架Spark之内存模型

发布时间:2019/06/27标签:   内存    点击量:

原标题:大数据计算框架Spark之内存模型
Executor 真个内存模子,包含堆内内存(On-heap Memory)和堆外内存(Off-heap Memory)。

大数据计算框架Spark之内存模型
存治理接口(MemoryManager )Spark 为Execution 内存和Storage 内存的治理供给了同一的接:MemoryManager。MemoryManager 的详细完成上,Spark 1.6 以后默许为同一治理(Unified Memory Manager)方法,1.6 之前采纳的动态治理(Static Memory Manager)方法仍被保存,可经过设置 spark.memory.useLegacyMode 参数启用。1动态内存治理(Static Memory Manager)堆内空间治理存储内存、履行内存和其余内存的巨细在 Spark 利用顺序运转时期均为牢固的,但能够在利用顺序启动行进行设置。可用的Execution 内存和 可用的Storage 内存盘算公式:可用的Execution 内存 = systemMaxMemory * spark.shuffle.memoryFraction * spark.shuffle.safetyFraction可用的Storage 内存 = systemMaxMemory * spark.storage.memoryFraction * spark.storage.safetyFractionsystemMaxMemory 取决于以后 JVM 堆内内存的巨细,公式中的两个 safetyFraction 参数,其意思在于在逻辑上预留出一块保险地区,下降因现实内存超越以后预设范畴而招致 OOM 的危险。这块逻辑上预留的地区一样由JVM治理。
大数据计算框架Spark之内存模型
图动态内存治理-堆内内存的调配堆外空间治理堆外只要Execution 内存和Storage 内存,他们的巨细由spark.memory.storageFraction这个参数决议。因为堆外内存占用的空间能够被准确盘算,以是无需再设定保险地区
大数据计算框架Spark之内存模型
动态内存治理-堆外内存的调配2同一内存治理Spark 1.6 以后引入的同一内存治理机制,与动态内存治理的差别在于Storage 内存和Execution 内存同享统一块空间,能够静态占用对方的闲暇地区。堆内内存(On-heap Memory)堆内内存地区大抵能够分为以下四类:1)Execution 内存:重要用于寄存 Shuffle、Join、Sort、Aggregation 等盘算进程中的常设数据2)Storage 内存:重要用于缓存和传布外部数据3)Other:用户数据构造、Spark外部元数据。4)预留内存(Reserved Memory):体系预留内存。默许是300MB。
大数据计算框架Spark之内存模型
堆内存(Off-heap Memory)Spark 1.6 开端引入了Off-heap memory(详见SPARK-11389)。这类形式不在 JVM 内请求内存,而是挪用 Java unsafe API (如 C 言语外面的 malloc())间接向操纵体系请求内存,JVM不论理这局部内存,以是能够幸免频仍的 GC,但要本人编写内存请求和开释的逻辑。堆外内存分为两类:Execution 内存和 Storage 内存。默许情形下堆外内存不启用,能够经过设置spark.memory.offHeap.enabled 参数启用,经过设置spark.memory.offHeap.size 参数设定堆外内存空间的巨细。假如堆外内存被启用,那末 Executor 内将同时存在堆内和堆外内存,Executor 中的 Execution 内存是堆内的 Execution 内存和堆外的 Execution 内存之和,同理,Storage 内存也一样。

上一篇:Wordpress 容器化、HTTPS化全攻略

下一篇:没有了

返回
版权信息Copyright ? IT技术教程 版权所有??? ICP备案编号:鲁ICP备09013610号