Spark java.lang.OutOfMemoryError: Java heap space

2023-11-10

http://stackoverflow.com/questions/21138751/spark-java-lang-outofmemoryerror-java-heap-space?rq=1


My cluster: 1 master, 11 slaves, each node has 6 GB memory.

My settings:

spark.executor.memory=4g, Dspark.akka.frameSize=512

Here is the problem:

First, I read some data (2.19 GB) from HDFS to RDD:

val imageBundleRDD = sc.newAPIHadoopFile(...)

Second, do something on this RDD:

val res = imageBundleRDD.map(data => {
                               val desPoints = threeDReconstruction(data._2, bg)
                                 (data._1, desPoints)
                             })

Last, output to HDFS:

res.saveAsNewAPIHadoopFile(...)

When I run my program it shows:

.....
14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Starting task 1.0:24 as TID 33 on executor 9: Salve7.Hadoop (NODE_LOCAL)
14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Serialized task 1.0:24 as 30618515 bytes in 210 ms
14/01/15 21:42:27 INFO cluster.ClusterTaskSetManager: Starting task 1.0:36 as TID 34 on executor 2: Salve11.Hadoop (NODE_LOCAL)
14/01/15 21:42:28 INFO cluster.ClusterTaskSetManager: Serialized task 1.0:36 as 30618515 bytes in 449 ms
14/01/15 21:42:28 INFO cluster.ClusterTaskSetManager: Starting task 1.0:32 as TID 35 on executor 7: Salve4.Hadoop (NODE_LOCAL)
Uncaught error from thread [spark-akka.actor.default-dispatcher-3] shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for ActorSystem[spark]
java.lang.OutOfMemoryError: Java heap space

There are too many tasks?

PS: Every thing is ok when the input data is about 225 MB.

How can I solve this problem?






I have a few suggestions:

  • If your nodes are configured to have 6g maximum for Spark (and are leaving a little for other processes), then use 6g rather than 4g, spark.executor.memory=6g. Make sure you're using as much memory as possible by checking the UI (it will say how much mem you're using)
  • Try using more partitions, you should have 2 - 4 per CPU. IME increasing the number of partitions is often the easiest way to make a program more stable (and often faster). For huge amounts of data you may need way more than 4 per CPU, I've had to use 8000 partitions in some cases!
  • Decrease the fraction of memory reserved for caching, using spark.storage.memoryFraction. If you don't use cache() or persist in your code, this might as well be 0. It's default is 0.6, which means you only get 0.4 * 4g memory for your heap. IME reducing the mem frac often makes OOMs go away. UPDATE: From spark 1.6 apparently we will no longer need to play with these values, spark will determine them automatically.
  • Similar to above but shuffle memory fraction. If your job doesn't need much shuffle memory then set it to a lower value (this might cause your shuffles to spill to disk which can have catastrophic impact on speed). Sometimes when it's a shuffle operation that's OOMing you need to do the opposite i.e. set it to something large, like 0.8, or make sure you allow your shuffles to spill to disk (it's the default since 1.0.0).
  • Watch out for memory leaks, these are often caused by accidentally closing over objects you don't need in your lambdas. The way to diagnose is to look out for the "task serialized as XXX bytes" in the logs, if XXX is larger than a few k or more than an MB, you may have a memory leak. See http://stackoverflow.com/a/25270600/1586965
  • Related to above; use broadcast variables if you really do need large objects.
  • If you are caching large RDDs and can sacrifice some access time consider serialising the RDD http://spark.apache.org/docs/latest/tuning.html#serialized-rdd-storage. Or even caching them on disk (which sometimes isn't that bad if using SSDs).
  • (Advanced) Related to above, avoid String and heavily nested structures (like Map and nested case classes). If possible try to only use primitive types and index all non-primitives especially if you expect a lot of duplicates. Choose WrappedArray over nested structures whenever possible. Or even roll out your own serialisation - YOU will have the most information regarding how to efficiently back your data into bytes, USE IT!
  • (bit hacky) Again when caching, consider using a Dataset to cache your structure as it will use more efficient serialisation. This should be regarded as a hack when compared to the previous bullet point. Building your domain knowledge into your algo/serialisation can minimise memory/cache-space by 100x or 1000x, whereas all a Dataset will likely give is 2x - 5x in memory and 10x compressed (parquet) on disk.

http://spark.apache.org/docs/1.2.1/configuration.html


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark java.lang.OutOfMemoryError: Java heap space 的相关文章

  • spark集群搭建与mysql元数据管理

    找个spark集群搭建是针对于上一篇hadoop的基础上搭建的 所以spark的版本也是要按照着hadoop版本进行下载 1 解压spark 修改spark的 etc profile的home目录 2 安装SCALA 并配置SCALA HO
  • spark创建maven工程创建scala目录并编译

    背景 我创建spark的maven工程的时候 在java目录同级还创建了一个scala目录 这就得考虑编译相关的事了 解决 1 创建source folder 如下图所示 直接创建就好了 2 编译带来的问题 编译的时候发现一个问题 就是在s
  • Spark基础知识(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 一 Spark概述 Spark模块 Core SQL Streami
  • Spark课程设计——电影推荐系统

    题目所需数据集及相应信息描述 数据集 1 用户评分数据集ratings dat 包含了大量用户的历史评分数据 2 样本评分数据集personalRatings dat 包含了少数几个用户的个性化评分数据 这些数据反映了某个用户的个性化观影喜
  • Kafka/Spark消费topic到写出到topic

    1 Kafka的工具类 1 1 从kafka消费数据的方法 消费者代码 def getKafkaDStream ssc StreamingContext topic String groupId String consumerConfigs
  • 深入理解 SQL 中的 Grouping Sets 语句

    前言 SQL 中 Group By 语句大家都很熟悉 根据指定的规则对数据进行分组 常常和聚合函数一起使用 比如 考虑有表 dealer 表中数据如下 id Int city String car model String quantity
  • 基于Spark的电商用户行为实时分析可视化系统(Flask-SocketIO)

    基于Spark的电商用户行为实时分析可视化系统 Flask SocketIO 项目简介 该项目已上线蓝桥课程 有需要的可凭邀请码 UB5mdLbl 学习哦 有优惠 课程地址 https www lanqiao cn courses 2629
  • Spark Job写文件个数的控制以及小文件合并的一个优化

    文章目录 背景说明 通过引入额外Shuffle对写入数据进行合并 EnsureRepartitionForWriting Rule CoalesceShufflePartitions Rule OptimizeShuffleWithLoca
  • 【Spark NLP】第 7 章:分类和回归

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • Spark大数据分析与实战笔记(第一章 Scala语言基础-3)

    文章目录 1 3 Scala的数据结构 1 3 1 数组 数组的遍历 数组转换 1 3 2 元组 创建元组 获取元组中的值 拉链操作 1 3 3 集合 List Set Map 1 3 Scala的数据结构 对于每一门编程语言来说 数组 A
  • 大数据spark开发入门教程

    大数据是互联网发展的方向 大数据人才是未来的高薪贵族 随着大数据人才的供不应求 大数据人才的薪资待遇也在不断提升 如果你也想进入大数据行业 也想学习大数据技术 大数据讲师认为 可以先从spark技术开始 一 Spark是什么 Spark是一
  • 大数据开发必备面试题Spark篇合集

    1 Hadoop 和 Spark 的相同点和不同点 Hadoop 底层使用 MapReduce 计算架构 只有 map 和 reduce 两种操作 表达能力比较欠缺 而且在 MR 过程中会重复的读写 hdfs 造成大量的磁盘 io 读写操作
  • spark内存模型

    Spark 1 6 开始使用了统一内存管理模块 UnifiedMemoryManager 并引入了堆外内存 Off heap memory 1 6之前的内存管理就不进行介绍了 spark堆内和堆外内存模型的示意图 注意 堆外内存是依赖于wo
  • Flume之:二、企业开发案例

    Flume之 二 企业开发案例 文章目录 Flume之 二 企业开发案例 三 企业开发案例 1 监控端口数据官方案例 2 实时读取本地文件到HDFS案例 3 实时读取目录文件到HDFS案例 4 flume监控Kafka gt Spark知识
  • spark groupByKey和groupBy,groupByKey和reduceByKey的区别

    1 groupByKey Vs groupBy 用于对pairRDD按照key进行排序 author starxhong object Test def main args Array String Unit val sparkConf n
  • 2020-10-24 大数据面试问题

    上周面试数据开发职位主要从公司的视角讲一下记录下面试流水 1 三面技术一轮hr 面到了cto 整体来看是这一周技术含量最高信息量最大的一个 1到4轮过了4个小时 技术上的问题主要问的对数据分层的理解 1 一面自我介绍 目前团队的规模多大 2
  • spark-3.1.2兼容多版本hive

    2 3 9版本Hive的支持 直接在实例化SparkSession时 启用hive支持即可 例如 val spark SparkSession builder appName Spark Hive Example config spark
  • 通过yarn提交作业到spark,运行一段时间后报错。

    加粗样式
  • sparkstreamming 消费kafka(2)

    spark streaming提供了两种获取方式 一种是同storm一样 实时读取缓存到内存中 另一种是定时批量读取 这两种方式分别是 Receiver base Direct 一 Receiver base Spark官方最先提供了基于R
  • sparkstreamming 消费kafka(1)

    pom

随机推荐

  • 段页式存储管理

    内存管理有三种 页式管理 段式管理和段页式管理 1 页式管理 页式管理是用户程序的地址空间被划分成若干固定大小的区域 称为 页 相应地 内存空间分成若干个实际的物理块 页和块的大小相等 可将用户程序的任一页放在内存的任一块中 实现了离散分配
  • OpenCV C++人脸识别

    OpenCV C 人脸识别 程序说明 代码 运行效果 程序说明 程序描述 来自OpenCV安装目录下Samples文件夹中的官方示例程序 人脸识别 源码路径 opencv sources samples cpp tutorial code
  • 【计算机网络】运输层:为什么TCP建立连接第一个SYN报文要消耗一个序号呢?

    TCP在建立连接时要发送的第一个SYN报文段是一个控制报文段 其主要目的是为了和对方建立同步 并明确自己采用的初始序号 这个报文段没有数据 但是这个SYN报文段非常重要 不允许丢失 传错了或丢失了就要重传 否则无法建立连接 这就必须进行编号
  • 模板类的开发

    模板类的开发 栈 定长数组 变长数组 栈 入栈和出栈使用引用是为了传递参数 注意构造函数初始化列表使用模板的写法 注意析构函数delete指针需要 测试 定长数组 重载了括号运算符 调用的其实是数组 使用int 使用char 变长数组
  • GuLi商城-项目初始结构创建,GitHub仓库创建

    GitHub账号和密码 账号 11360XXXXX qq com 密码 ZH SH 19 1016 新建仓库 gulimall 记得勾选下Add a README file 上面忘记勾选了 实际建议还是要勾选下 复制路径 打开IDEA检出项
  • eclipse中配置Tomcat

    将Tomcat服务器整合到Eclipse工具中 可以通过Eclipse启动 关闭tomcat服务器 更重要的是 可以非常方便的将在Eclipse中创建的Web项目发布到Tomcat服务器中运行 文章目录 在这里插入图片描述 方式一 在win
  • 使用python查询Elasticsearch并导出所有数据

    作为数据分析师 要学的可真多 但一旦触及到数据 无论它在藏在哪里 只要我们想要使用 就真是无所不用其极阿 python刀操起来 刚开始一直通过Kibana提供的工具来查询存储在Elasticsearch中的数据 统计个结果完全没问题 偶一日
  • L2-002. 链表去重

    给定一个带整数键值的单链表L 本题要求你编写程序 删除那些键值的绝对值有重复的结点 即对任意键值K 只有键值或其绝对值等于K的第一个结点可以被保留 同时 所有被删除的结点必须被保存在另外一个链表中 例如 另L为21 15 15 7 15 则
  • 2019 MySQL 8 安全安装避坑指南

    1 安装vmware centos的虚拟机 省却安装vmware虚拟机管理的部分 centos7下载地址 官方 https www centos org download 镜像文件地址 http mirrors nju edu cn cen
  • Mathmatic 函数表

    一 运算符及特殊符号 Line1 执行Line 不显示结果 Line1 line2 顺次执行Line1 2 并显示结果 name 关于系统变量name的信息 name 关于系统变量name的全部信息 command 执行Dos命令 n N的
  • gdal读取tif常用函数

    读入文件 dataset gdal open filename 获取数据 dataset GetDescription 获得栅格的描述信息 dataset RasterCount 获得栅格数据集的波段数 band dataset GetRa
  • Cocos2d-x中的数组类CCArray深入分析

    前面的博文中我们提到了一个词典类CCDictionary 它和数组类CCArray共称Cocos2d x两大常用数据结构 因为在项目中数组类 CCArray我们使用的实在是太多了 因此这里补充一篇关于CCArray深入分析的博文 其中提到了
  • 把 14 亿中国人都拉到一个微信群在技术上能实现吗?

    点击上方 芋道源码 选择 设为星标 做积极的人 而不是积极废人 源码精品专栏 原创 Java 2019 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 Rocket
  • 关于列表的扁平化

    Python2 from compiler ast import flatten a 1 2 3 4 5 6 7 8 9 In 3 flatten a Out 3 1 2 3 4 5 6 7 8 9 In 4 a 1 2 3 4 5 6 7
  • uni-app自定义全屏切换组件

    uni app自定义全屏切换组件 目录结构 顶部导航实现
  • python对变量的字符串不转义 变量如何加r

    这个变量是含有16进制 python继续操作不是原始字符串 不能进行正则匹配 如果是字面量字符串可以在前面直接加r 但是对于变量的话使用 repr 变量 来实现不进行转义 即 变量 repr 变量 repr 函数将对象转化为供解释器读取的形
  • 前端HTML学习(一)

    以上 在html的基础结构上 进行内容的编辑
  • 设计模式的 C++ 实现---装饰者模式

    前文回顾 单例模式 一 单例模式 二 观察者模式 简单工厂模式 工厂方法模式 一 工厂方法模式 二 抽象工厂模式 一 抽象工厂模式 二 原型模式 外观模式 中介者模式 代理模式 前言 装饰者模式的本质和代理模式的原理是一样的 体现了对一个既
  • 动态规划学习(整理了几个个人认为易懂的资料)

    1 一维背包问题 额 没想到 背包问题解题也有套路 排版美观 例子简明易懂 代码明了 2 TSP问题 1 图示DP解TSP 看看例子 代码就算了 2 代码 Python版 这个代码比较好看
  • Spark java.lang.OutOfMemoryError: Java heap space

    http stackoverflow com questions 21138751 spark java lang outofmemoryerror java heap space rq 1 My cluster 1 master 11 s