分享

在CDH上搭建的solr集群,core的索引数量超过2千万以后,性能下降的很快

henrylin 发表于 2015-12-24 19:00:36 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 22336
环境是CDH5.2,机器就用1、2、3、4、5来表示,环境是HA高可用模式,1和2是namenode的主备机,3、4、5是datanode,目前只用了HDFS、HIVE、SOLR、HBASE、ZOOKEEPER。
SOLR安装在3、4、5这三台机器,为集群模式,文件存储方式为HDFS。
用JAVA程序调用solr接口,添加索引,目前测试,1700万,分6个线程跑,只要15分钟左右,比较正常,第二次再创建1700万的数据索引,大概要40分钟,再往后要1.5小时,共创建了8500万的数据,数据是从文本文件中用bufferReader读取,每个线程读取不同的文件,打印日志看,每2万条打印一次,每次读取和处理数据的时间在100-200毫秒左右,每10万条数据,不超过1秒钟,因此判断读取处理数据文件不存在性能问题,但是创建solr索引每10万条大约要2-3分钟(从第3次创建1700万的数据开始)
整体上看,性能下降是从数据过了2000万以下,越往后越慢,solr的配置文件配置改成手动和自动的都试过,自动提交的性能会稍快一些。
-------------------------------------------------------------------------------
不用CDH的环境,用TOMCAT+SOLR的方式,一台I5配置的PC机加一台虚拟机,存储速度每10万条只在10秒左右,PC机运行ECLIPSE,虚拟机安装TOMCAT+SOLR。

哪位大神有类似的经验,请不吝赐教。

已有(2)人评论

跳转到指定楼层
xuanxufeng 发表于 2015-12-24 20:26:38
从三个方面
  l 调优某个Solr服务器(Scale High)
  通过缓存和内存管理优化某个单实例的Solr。将Solr部署到一个拥有快速的CPU和硬件的专用服务器,通过调优,最大化的将单个服务器的性能达到最高。
  l 使用多Solr服务器(Scale Wide)
  使用多Solr服务器。如果你的avgTimePerRequest参数在你可接受的范围内(数据量一般在数百万),那么可以通过配置将你 的master上的索引完整地复制到slave机器上;如果你的查询已经很慢,那么使用分片来讲你的单个查询的负载分发到多个Solr服务器上。
  l 使用复制(replication)和分片(sharding)(Scale Deep)
  当你的数据量足够大,你需要同时使用复制和分片,那么每个分片将对应一个master和若干slave,这将是一个最复杂的架构。

这篇文章很适合楼主
Solr的扩充(Scaling)以及性能调优【分享】
http://www.aboutyun.com/thread-16739-1-1.html



回复

使用道具 举报

henrylin 发表于 2015-12-24 20:47:51
非常感谢楼上分享
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条