分享

MapReduce中使用Mongodb查询数据特别慢

Joker 发表于 2016-1-15 15:30:53 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 7919


在MapReduce中使用Mongodb查询出是否存在该用户历史数据。
非常简单的操作,但是当数据达到1GB左右的时候,一天都没有运行完毕。我仅仅是在Map做了处理,Reudce没有执行

大家有遇到Hadoop连接数据库查询特别慢的经验吗?以及如何去优化这种问题。谢谢!

已有(4)人评论

跳转到指定楼层
bob007 发表于 2016-1-15 16:20:14
这里整理总结了下,希望对楼主有帮助

一个简单办法可以大幅提高mongodb mapreduce的速度,以前我在一台机器上只部署了一个mongod的数据库实例,起始如果机器配置可以的话,可以在一台机器上多配几个Mongod数据库实例,把他们用分片的形式加到集群中就可以了。这样就相当于多进程操作了,避免了js单进程的尴尬。如果机器的cpu是12核的可以起6-8个mongod,根据测试发现再多个mongod对于速度的影响不升反降。据我分析之前是因为单进程操作,是因为单个cpu达到瓶颈。改成多进程后,达到磁盘i/o瓶颈后速度就没法提升了。

推荐文章:
MongoDB MapReduce速度提升20倍的优化宝典
http://www.aboutyun.com/thread-17040-1-1.html



回复

使用道具 举报

Joker 发表于 2016-1-15 16:26:28
bob007 发表于 2016-1-15 16:20
这里整理总结了下,希望对楼主有帮助

一个简单办法可以大幅提高mongodb mapreduce的速度,以前我在一台 ...

谢谢,不过我是Hadoop的MapReduce调用DB,不是mongo的MapReduce。

回复

使用道具 举报

bob007 发表于 2016-1-15 16:44:18
Joker 发表于 2016-1-15 16:26
谢谢,不过我是Hadoop的MapReduce调用DB,不是mongo的MapReduce。

那这能优化的地方只有map了,应该是常规map优化了。
首先应该优化下自己的代码,然后在优化下内存,io等配置

下面进攻参考
基于MapReduce作业(编程)的MapReduce数据流(过程)优化
http://www.aboutyun.com/thread-7533-1-1.html

MapReduce1-2:MapReduce任务的优化
http://www.aboutyun.com/thread-7792-1-1.html


hadoop的IO和MapReduce优化参数
http://www.aboutyun.com/thread-7798-1-1.html





回复

使用道具 举报

Joker 发表于 2016-1-15 16:51:16
bob007 发表于 2016-1-15 16:44
那这能优化的地方只有map了,应该是常规map优化了。
首先应该优化下自己的代码,然后在优化下内存,io等 ...

1.日志收集是5分钟进行搜集,所以一天的小文件特别大。着是需要进行优化的一部分(网上很多参考小文件合并)2. 每个对象最好用完null,我这边常用进行静态变量了


还有一点个人对mongodb也不熟悉,所以导致没有好好的正确优化代码,甚至导致程序运行更慢(或者不在运行)

在优化的别人的或者修改别人代码最好先弄明白做了哪些工作。
盲目优化一些变量在内存生命周期可能会有一些想不到的结果(哭晕在厕所)

大家也可以进行完善补充,指出我的错误之处
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条