首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

spark 内存管理

1. spark 内存用不好是怎样的情况?...甚至都已经溢出到磁盘上了 2.Spark内存管理机制 在一个Executor节点上,内存被分为了堆内内存和堆外内存。...Memory 部分 主要用于计算,shuffle用到的 临时内存 Storage Memory 部分 当需要缓存rdd的时候用到的内存 ---- 在Spark1.6之前,这些配置都是相对静态的 1.6...2.当Storage内存不足时,可部分占用Execution的内存空间。反之相同。 3.他们之间有一个buffer的区域可以互相占用 4.提高内存的利用率 生产环境中如何配置这些参数?...1.先看webUI具体运行所用的内存大小,配置spark.memory.storageFraction(Storage所占系统内存的比例) 在配置spark.memory.fraction(统一内存占整个内存的大小

42140

Spark读取配置Spark读取配置

Spark读取配置 我们知道,有一些配置可以在多个地方配置。...配置 spark-env.sh的SPARK_EXECUTOR_MEMORY配置 同一个配置可以在多处设置,这显然会造成迷惑,不知道spark为什么到现在还保留这样的逻辑。...在其构造函数中就完成了从 『spark-submit --选项』、『spark-defaults.conf』、『spark-env.sh』中读取配置,并根据策略决定使用哪个配置。...Step1:创建各配置成员并赋空值 这一步比较简单,定义了所有要从『spark-submit --选项』、『spark-defaults.conf』、『spark-env.sh』中读取的配置,并赋空值。...若一个配置在多处设置,则优先级如下: spark-submit --选项 > spark-defaults.conf配置 > spark-env.sh配置 > 默认值 最后,附上流程图 ?

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spark系列 - (6) Spark 内存管理

    Spark内存管理 在执行Spark的应用程序时,Spark集群会启动Driver和Executor两种JVM线程,前者为主控进程,负责创建Spark上下文,提交Spark作业(Job),并将作业转化为计算任务...堆内内存 堆内内存的大小,由Spark应用程序启动时spark.executor.memory参数配置。...申请内存Spark在代码中new一个对象实例 JVM从堆内内存分配空间,创建对象并返回对象引用 Spark保存该对象的引用,记录该对象占用的内存 释放内存Spark记录该对象释放的内存,删除该对象的引用...在默认情况下堆外内存并不启用,可以通过配置spark.memory.offHeap.enabled参数启用,并由spark.memory.offHeap.size参数设定堆外空间的大小。...静态内存管理 在Spark最初采用的静态内存管理机制下,存储内存、执行内存和其他内存的大小在Spark引用程序运行期间均为固定的,但用户可以引用程序启动前进行配置

    71730

    Spark内存调优

    堆内和堆外内存示意图 2.1 堆内内存 堆内内存的大小,由 Spark 应用程序启动时的 –executor-memory 或 spark.executor.memory 参数配置。...在默认情况下堆外内存并不启用,可通过配置 spark.memory.offHeap.enabled 参数启用,并由 spark.memory.offHeap.size 参数设定堆外空间的大小。...)方式仍被保留,可通过配置 spark.memory.useLegacyMode 参数启用。...三、内存空间分配 3.1 静态内存管理 在 Spark 最初采用的静态内存管理机制下,存储内存、执行内存和其他内存的大小在 Spark 应用程序运行期间均为固定的,但用户可以应用程序启动前进行配置,堆内内存的分配如图所示...静态内存管理图示——堆外 静态内存管理机制实现起来较为简单,但如果用户不熟悉 Spark 的存储机制,或没有根据具体的数据规模和计算任务或做相应的配置,很容易造成"一半海水,一半火焰"的局面,即存储内存和执行内存中的一方剩余大量的空间

    1.3K30

    Spark的误解-不仅spark内存计算,hadoop也是内存计算

    市面上有一些初学者的误解,他们拿spark和hadoop比较时就会说,Spark内存计算,内存计算是spark的特性。...原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/7197420.html 误解一:Spark是一种内存技术   大家对Spark最大的误解就是spark一种内存技术...Spark内存计算没有错误,但是这并不是它的特性,只是很多专家在介绍spark的特性时,简化后就成了spark内存计算。   什么样是内存技术?就是允许你将数据持久化在RAM中并有效处理的技术。...但是有人还是会认为Spark就是一种基于内存的技术,因为Spark是在内存中处理数据的。这当然是对的,因为我们无法使用其他方式来处理数据。...所以结论是:Spark并不是基于内存的技术!它其实是一种可以有效地使用内存LRU策略的技术。

    1.4K20

    如何查看服务器配置:核数和内存

    CPU的情况 top top 命令是监视 Linux 中实时系统进程的基本命令之一,显示系统信息和正在运行的进程信息,如:正常运行时间,平均负载,正在运行的任务,登录的用户数,CPU利用率,MEM利用率,内存和交换信息...2、查看内存总容量 # /proc/meminfo统计的是系统全局的内存使用状况 cat /proc/meminfo # MemTotal: 总的物理内存,需要转换一下 # MemFree: 空闲内存...,表示系统尚未使用的内存 2.1)通过free来显示内存的使用情况 free free -m free -g # 默认不加参数就是以 KB 为单位显示结果, # 可以加-m,显示内存总量,以...MB 为单位显示结果, # 可以加-g,显示内存总量,以 GB 为单位显示结果。

    12.6K20

    解惑|很多人对spark内存调优不太理解的配置

    今天,星球里有个妹子问了一个问题,问题出自前面的一篇文章: spark 内存,GC及数据结构调优 其中有段话:在gc的统计信息中,如果老年代接近满了, 减少用于缓存的内存(通过减小spark.memory.Fraction...她的疑惑是为啥不直接设置: spark.memory.storageFraction 以减少存储内存的占比。 大家可以思考一下,减少spark.memory.storageFraction,可行吗?...要知道spark的大部分内存分为执行内存和存储内存。他们共享一个存储空间M。同时,存储内存在执行内存空闲的时候可以占用执行内存空间,执行内存也可以在存储内存大于一个阈值R的时候占用存储内存。...然后就会明白,假如我们单纯的减少spark.memory.storageFraction是行不通的,因为存储内存可以占用执行内存进行缓存,缓解不了老年代被吃满的状况,所以只能调整spark.memory.fraction...2.spark最骚的操作是,没有加内存解决不了的问题,假如有那是没加够。 所以建议大家在学习的时候注意深入细心,然后连贯思考。

    2.3K40

    教你如何轻松配置Spark的历史日志服务器JobHistoryServer?

    本篇博客,博主就为大家带来在Spark配置JobHistoryServer的详细过程。 ?...---- 1.进入到spark安装目录下的conf文件夹 cd /export/servers/spark/conf 2.修改配置文件名称 vim spark-defaults.conf spark.eventLog.enabled...=hdfs://node01:8020/sparklog 配置了该属性后,在start-history-server.sh时就无需再显式的指定路径,Spark History Server页面只展示该指定路径下的信息...spark.history.retainedApplications=30指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数.../spark/sbin/start-all.sh 6.在master上启动日志服务器 /export/servers/spark/sbin/start-history-server.sh 7.运行一个计算

    2.1K41

    Spark Sort Based Shuffle内存分析

    Shuffle Write 内存消耗分析 Shuffle Write 的入口链路为: org.apache.spark.scheduler.ShuffleMapTask ---> org.apache.spark.shuffle.sort.SortShuffleWriter...---> org.apache.spark.util.collection.ExternalSorter 会产生内存瓶颈的其实就是 org.apache.spark.util.collection.ExternalSorter...其中 myMemoryThreshold可通过如下配置获得初始值 spark.shuffle.spill.initialMemoryThreshold = 5 * 1024 * 1024 接着会向 shuffleMemoryManager...: ExecutorHeapMemeory * 0.2 * 0.8 上面的数字可通过下面两个配置来更改: spark.shuffle.memoryFraction=0.2 spark.shuffle.safetyFraction...Shuffle Read 内存消耗分析 Shuffle Read 的入口链路为: org.apache.spark.rdd.ShuffledRDD ---> org.apache.spark.shuffle.sort.HashShuffleReader

    1.1K30

    Spark内存管理详解(好文收藏)

    堆内和堆外内存示意图: 2.1 堆内内存 堆内内存的大小,由 Spark 应用程序启动时的 –executor-memory 或 spark.executor.memory 参数配置。...在默认情况下堆外内存并不启用,可通过配置 spark.memory.offHeap.enabled 参数启用,并由 spark.memory.offHeap.size 参数设定堆外空间的大小。...)方式仍被保留,可通过配置 spark.memory.useLegacyMode 参数启用。...内存空间分配 3.1 静态内存管理 在 Spark 最初采用的静态内存管理机制下,存储内存、执行内存和其他内存的大小在 Spark 应用程序运行期间均为固定的,但用户可以应用程序启动前进行配置,堆内内存的分配如下图所示...静态内存管理图示——堆外: 静态内存管理机制实现起来较为简单,但如果用户不熟悉 Spark 的存储机制,或没有根据具体的数据规模和计算任务或做相应的配置,很容易造成"一半海水,一半火焰"的局面,即存储内存和执行内存中的一方剩余大量的空间

    78621

    Spark内部原理之内存管理

    堆内和堆外内存示意图 1.1 堆内内存 堆内内存的大小,由 Spark 应用程序启动时的 –executor-memory 或 spark.executor.memory 参数配置。...在默认情况下堆外内存并不启用,可通过配置 spark.memory.offHeap.enabled 参数启用,并由 spark.memory.offHeap.size 参数设定堆外空间的大小。...)方式仍被保留,可通过配置 spark.memory.useLegacyMode 参数启用。...内存空间分配 2.1 静态内存管理 在 Spark 最初采用的静态内存管理机制下,存储内存、执行内存和其他内存的大小在 Spark 应用程序运行期间均为固定的,但用户可以应用程序启动前进行配置,堆内内存的分配如图...静态内存管理图示——堆外 静态内存管理机制实现起来较为简单,但如果用户不熟悉 Spark 的存储机制,或没有根据具体的数据规模和计算任务或做相应的配置,很容易造成”一半海水,一半火焰”的局面,即存储内存和执行内存中的一方剩余大量的空间

    73850

    Apache Spark 内存管理详解(下)

    导读:本文是续接上一篇《Apache Spark内存管理详解(上)》(未阅读的同学可以点击查看)的内容,主要介绍两部分:存储内存管理,包含RDD的持久化机制、RDD缓存的过程、淘汰和落盘;执行内存管理,...图2 Spark Unroll示意图 在《Apache Spark 内存管理详解(上)》(可以翻阅公众号查看)的图3和图5中可以看到,在静态内存管理时,Spark在存储内存中专门划分了一块Unroll空间...执行内存管理 ---- 多任务间内存分配 Executor内运行的任务同样共享执行内存Spark用一个HashMap结构保存了任务到内存耗费的映射。...Spark用MemoryBlock巧妙地将堆内和堆外内存页统一抽象封装,并用页表(pageTable)管理每个Task申请到的内存页。...小结 ---- Spark的存储内存和执行内存有着截然不同的管理方式:对于存储内存来说,Spark用一个LinkedHashMap来集中管理所有的Block,Block由需要缓存的RDD的Partition

    1.1K10

    Spark硬件配置推荐

    1、存储系统   如果可以的话,把Spark的hadoop的节点安装在一起,最容易的方式是用standalone的模式安装,用mapred.child.java.opts设置每个任务的内存,用mapred.tasktracker.map.tasks.maximum...2、本地硬盘   当Spark没办法把所有的内容放在内存中计算的时候,它会把部分内容存储到硬盘当中,推荐一个节点配置4-8块硬盘,不要配置RAID,仅仅是作为单独的mount点。...用spark.local.dir来配置本地磁盘目录,如果跑着HDFS,使用和HDFS一样的硬盘。...3、内存   Spark最少在运行8GB以上的内存的机器上面,推荐是把最多75%的内存分配给Spark,把剩下的分配给操作系统和缓存。...5、CPU核心   Spark支持扩展数十个CPU核心一个机器,它实行的是线程之间最小共享。我们需要至少使用8-16个核心的机器,当内存足够的情况之下,程序跑起来,就看CPU和网络了。

    1.7K70
    领券