1、Spark on Yarn下JVM的OOM问题及解决方式 
2、Spark中Driver的Stack Overflow的问题及解决方式

Spark on Yarn cluster mode: 此时有可能会报OOM的错误,具体来说: 
由于Client模式下一定没有出现OOM,而在Cluster模式下一定出现了OOM,所以必然说明OOM是Driver导致的! 
Driver在Client和Cluster模式下占用的内存都是一致的,例如都是100M,现在的问题是为什么在Client下的100M不会OOM,但是在Cluster模式下的100M会出现OOM?

更进一步:这个OOM是永久代产生的OOM

真相是:无论在Client模式还是在Cluster模式下,我们的Driver都是运行在JVM中的,而JVM一定有具体的例如永久代的配置参数等信息。在Client模式下,加载本地的配置信息的时候,Driver所在的JVM的永久代的默认大小是128MB,而在Cluster下默认的永久代的大小是82MB,当你的代码业务逻辑很多的时候,就要构造很多永久代的对象,此时的永久代消耗的大小例如说是100MB,所以在Client模式下可以成功运行,但是在Cluster模式下因为100M大于82M,所以就产生永久代的OOM问题,导致程序启动失败!

解决方式: 
在spark-submit的时候设定conf部分的 spark.driver.extraJavaOptions: -XX:PermSize=256M -MaxPermSize=256M,Java8设置元数据空间。

Spark运行时候的StackOverflow问题:

之所以产生Stack Overflow,原因是在Stack方法栈中方法的调用链条太长所导致的,经典的过长链条有两种: 
第一种:过于深度的递归 
第二种:过于复杂的业务调用链条(很少见!)

在Spark中什么时候会出现Stack Overflow呢?

例如SQL语句中的条件组合太多,而SQL在Spark SQL中会通过Catalyst首先变成一棵树,并最终变成RDD的编程实现。在这个过程中,有可能把我们的SQL语句解析成为不断地递归调用,此时就有可能出现Stack Overflow的情况。什么样的SQL语句?例如:SELECT … FROM … WHERE ..OR…OR…OR…OR…

怎么办? 
对于SQL的情况就要进行拆分!例如把一个很长的SQL语句变成很多小的SQL语句,构成很多子查询。

Spark On Yarn Cluster生产环境下JVM的OOM和Stack Overflow问题的更多相关文章

  1. 生产环境下JVM调优参数的设置实例

    JVM基础:生产环境参数实例及分析 原始配置: -Xms128m -Xmx128m -XX:NewSize=64m -XX:PermSize=64m -XX:+UseConcMarkSweepGC - ...

  2. Java生产环境下性能监控与调优详解视频教程 百度云 网盘

    集数合计:9章Java视频教程详情描述:A0193<Java生产环境下性能监控与调优详解视频教程>软件开发只是第一步,上线后的性能监控与调优才是更为重要的一步本课程将为你讲解如何在生产环境 ...

  3. Python开发程序:生产环境下实时统计网站访问日志信息

    日志实时分析系统 生产环境下有需求:要每搁五分钟统计下这段时间内的网站访问量.UV.独立IP等信息,用直观的数据表格表现出来 环境描述: 网站为Nginx服务,系统每日凌晨会对日志进行分割,拷贝到其他 ...

  4. 生产环境下一定要开启mysqlbinlog

    在没有备份数据库的情况下,可以用binlog进行恢复 在生产环境下安全第一,损失一点点效率换来的安全还是值得的. http://www.cnblogs.com/zc22/archive/2013/06 ...

  5. mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法

    mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法 满头大汗的宅鸟该怎么办呢? mysql -u root -e "show processlist"|grep -i ...

  6. Mysql迁移工具在生产环境下的使用

    在产品迭代开发发布过程中,由于业务需求的增加,数据库难免会有结构调整等操作. 在每个版本发布过程中怎么控制每个版本server端程序与数据库版本保持一致,以及数 据库升级.回滚等操作. 本博文宅鸟将向 ...

  7. [原]生产环境下的nginx.conf配置文件(多虚拟主机)

    [原]生产环境下的nginx.conf配置文件(多虚拟主机) 2013-12-27阅读110 评论0 我的生产环境下的nginx.conf配置文件,做了虚拟主机设置的,大家可以根据需求更改,下载即可在 ...

  8. 生产环境下JAVA进程高CPU占用故障排查

    问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过, ...

  9. 一次生产环境下MongoDB备份还原数据

    最近开发一个版本的功能当中用到了MongoDB分页,懒于造数据,于是就研究了下从生产环境上导出数据到本地来进行测试. 研究了一下,发现MongoDB的备份还原和MySQL语法还挺类似,下面请看详细介绍 ...

随机推荐

  1. Linux下的XAMPP基本配置技巧(设置虚拟主机、添加FTP账户等)

    xampp安装好之后就只有一个默认站点及一个默认nobody的ftp账户,这显然不符合我们平时的需求了,那么下面就来讲一下如何设置并管理多个虚拟主机及ftp账户了,至于xampp的安装不在此讨论范围, ...

  2. 【转载】.NET 开发者必备的工具箱

    本文作者Spencer是一名专注于ASP.NET和C#的程序员,他列举了平时工作.在家所使用的大部分开发工具,其中大部分工具都是集中于开发,当然也有一些其它用途的,比如图片处理.文件压缩等. 如果你是 ...

  3. JS - 兼容到ie7的自定义样式的滚动条封装

    demo: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  4. css笔记 - 张鑫旭css课程笔记之 overflow 篇

    overflow基本属性值 visible(默认值):超出依然显示 hidden :超出隐藏 scroll :超出,滚动显示.子元素不超出也会有滚动条的那条轨道. auto:如果超出,滚动显示.如果不 ...

  5. 原生js--http请求

    1.终止请求和超时 终止请求XMLHttpRequest对象提供abort方法,调用该方法时触发abort事件 XHR2提供了timeout属性,当超时发生时触发timeout事件.但浏览器尚不支持自 ...

  6. [原]openstack-kilo--issue(三) openstack-nova-issue-systemctl start openstack-nova-compute.service

    本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. execute systemctl start openstack-nova-c ...

  7. GlusterFS六大卷模式說明

    GlusterFS六大卷說明   第一,分佈卷 在分布式卷文件被随机地分布在整个砖的体积.使用分布式卷,你需要扩展存储,冗余是重要或提供其他硬件/软件层.(簡介:分布式卷,文件通过hash算法随机的分 ...

  8. backface-visibility 属性

    图片img加了backface-visibility 属性, 图片变清晰, 原因不明 a,img{ backface-visibility:hidden; -webkit-backface-visib ...

  9. 【CF932E】Team Work/【BZOJ5093】图的价值 数学+NTT

    [CF932E]Team Work 题意:求$\sum\limits_{i=1}^nC_n^ii^k$,答案模$10^9+7$.$n\le 10^9,k\le 5000$. [BZOJ5093]图的价 ...

  10. vim配置函数跳转(c/c++)

    暂时草记一下,有时间好好整理 ctags 如果只是查看函数与变量是在哪里定义的,用ctags就可以了. ctrl+]跳到定义的地方,ctrl+t跳回来. 想要像IDE那样在旁边显示函数与变量列表,用t ...