Hadoop跑程序报超过内存错误

  实验跑一个900多兆网络pagerank值,我用的是python程序跑,但是单机跑不了(因为这个网络非常大,所以矩阵计算特别占内存),于是需要借助Hadoop来计算。但是hadoop开始跑的时候还是跑不了,报溢出内存错误。查网上有说修改mapred-site.xml文件,但是这样很麻烦,你需要一个个点去配置,很麻烦。

 其实这里有两类方法,一种是调内存,第二种就是增加mapper。而这里都有一种动态设置的办法设置,用stream的-jobconf这个指令配置即可,而不用去设置文件。

 动态设置内存-jobconf mapreduce.map.memory.mb=5120,即每个mapper有5120M内存。但是我不是很推荐用这种方法,因为这个还是有一个极限值的,就是节点的真实内存(通常是达不到的,因为hadoop自己也要占内存。)

  在这里,我推荐用增加mapper的方法。-jobconf mapred.map.tasks=15即分配15个mapper跑这段程序。如果程序还跑不了,就慢慢加,一个个试就可以了。

  下面附一个指令:

  ./bin/hadoop jar /usr/local/hadoop-2.7.2/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar -input /data/20155 -output /data/2015pr --mapper /root/code/mapper.py -reducer /root/code/Reducer1.py -file /root/code/mapper.py -file /root/code/Reducer1.py -jobconf mapred.map.tasks=15 -jobconf mapred.reduce.tasks=5

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值