Spark如何使用内存.pptx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
张义 目录0102配置内存使用执行器真正使用的内存 配置内存使用1 配置内存使用前面学习了如何为驱动程序和执行器分配内存,从而为Spark分配内存。那么Spark如何使用分配给它的内存?Spark 使用内存有两个目的:执行代码和存储数据。执行内存Spark用于执行,包括各种操作所需的内存,如shufle连接和排序。存储内存Spark用于在集群中缓存和移动内部数据。存储和计算使用相同的内存池。当没有内存被用于执行时,存储可以使用所有可用的内存,同样,当没有数据被缓存在内存中时,执行可以使用所有的内存。对于占用内存的对象,需要更多的执行内存才会清除它,直到用于存储的内存下降到阈值以下。阈值意味着缓存RDD的应用程序实际上可以保证或保留存储RDD的最小存储空间,不用担心这些RDD被清除。 配置内存使用为了说明Spark 如何分配执行和存储用内存,我们使用以下符号来表示内存的各种组件。M:表示用于存储和执行的内存。R:最低存储空间(阈值),不能将RDD从存储清除。使用以下两个配置属性来调整用于存储和执行的内存:spark.memory.fraction:该分数表示M作为JVM堆空间的一部分。默认值为0.75。这意味着分配给执行器的内存的25%用于存储实体,例如用户数据结构和内部Spark元数据。实际上,该属性将M显示为JVM的一部分。 Apache Spark建议将此属性保留为默认值。 配置内存使用spark.memory.storageFraction:此参数用于将保留的内存(R)配置为总内存的一部分,即R为M的一部分。默认值为0.5。请注意,在Spark 2.0中,spark.memory.fraction属性的默认值为0.6,该属性(spark.memory.storageFraction)的默认值为0.5。这意味着应用程序缓存的任何RDD都将受到保护,以免被清除,直到它们超过分配给存储的内存50%的阈值。请注意,此值越高,执行内存越少,任务可能会更频繁地溢出到磁盘。Apache Spark建议将此属性保留为默认值。 配置内存使用该属性的默认值为0.5表示,Spark在执行任务期间使用50%的执行器内存来缓存RDD,另外50%用于存储常规对象。如果你困扰于过多的垃圾回收,可能会认为RDD不需要50%的内存,从而将其减少为40%,所以60%的内存可用于创建对象,从而减少对垃圾回收的需求。 执行器真正使用的内存2 执行器真正使用的内存分配给执行器多少内存直接影响Spark应用程序的执行。假设将spark.executor.memory属性的值设置为4GB,则执行器中运行的任务实际在执行代码中使用了多少内存呢?下面来分析一下执行器实际使用多少内存来执行代码。1. 在此例子中,在做任何事情之前,Spark从Java堆中抽去约300MB作为“保留内存”,所以现在Java 堆剩下4096 - 300 = 3796MB。 执行器真正使用的内存2. spark.memory.fraction参数的默认值为0.75,可用内存缩小为0.75 *3796MB=2847MB或2.78GB。3. spark.memory. storageFraction属性(默认值为0.5)确保,在步骤2中将为执行器留出的内存的50%用于缓存数据。这里即为0.5 * 2847MB=1423.5MB。这是初始的存储内存大小。执行器可以使用其他50% ( 即1423.5MB)来执行应用程序代码。

文档评论(0)

中小学K12教育 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档