Spark项目如何应对小资源大数据的OOM情况

1.什么是小资源大数据的OOM情况?

假设用户driver端的内存为1G,cpu核数指定为1核,在运行程序时加载到内存中的数据量超过了1G,就会导致JVM崩溃抛出 Java heap space 堆内存空间溢出异常或者overhead limit exceededGC回收时间过长的内存异常,一般为这两种,也可能有堆外存溢出,但可能较小。

2.使用内存分析工具进行分析

先将dump文件取出,然后使用eclipse memory analyzer, 基于eclipse RCP的内存分析工具。详细信息参见:http://www.eclipse.org/mat/

3.在程序内哪些情况会导致内存溢出?

1)存在占用内存较大的数据结构如array、list等,当他们的长度过大,比如5000w长度时,如果是int型的数组那么将会占用约200mb的内存,如果是double类型将占用400mb,这可是一个相当庞大的开销。

2)action操作,例如包括但不限于collect(),redcue(),join()等操作,collect()会将rdd或dataset等数据集转化为数组,占用内存大小取决于转化后的数组大小,reduce(),groupbykey()等操作会触发shuffle操作的方法,会将多个分区的数据集中到一个分区中也有可能发生内存溢出,join()操作时系统会将两个rdd的数据都加载都内存进行匹配和比较也会导致内存溢出。

3)缓存的数据例如使用catcah()等操作将数据缓存到了内存中时,如果缓存的数据过大也是对系统不利的,容易导致内存溢出,可以修改缓存级别,选择磁盘&#x

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值