hadoop streaming内存超限解决方案

场景:运行的一个streaming的mapper-reducer任务需要读入一个2g大小的词表作为辅助分析数据,然后不出意外的,内存超限。

解决方案:
1.提高内存上限:
增加配置,将上限调高到8000M,这样就解决了,如下:
-D stream.memory.limit=8000

2.将读入词表的操作转到reducer阶段完成:
这样需要点思路转换,我需要对比的key是地理位置,词表的key也是地理位置,可以在reducer阶段将它们归并起来做处理,缺点就是麻烦了些。

3.优化读入数据:
提高内存上限到底是治标不治本,应当避免读入这种大数据,举个例子,我的解决方案是把词表用hash的方式转化为数字,大小从原来的2g变为400m,顺利运行,速度提高。

以上,就是个人碰到hadoop内存超限的解决方法了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值