文档章节

分布式搜索Solrcloud启动配置详解

震秦
 震秦
发布于 2012/10/25 11:33
字数 1198
阅读 1.8W
收藏 22

SolrcloudApache关于Solr分布式搜索的一个解决方案.前面我介绍过Katta,测试发现了很多问题,我还是不敢在公司的项目上使用,毕竟公司都是商业性质的,业务不是那么简单,压力也不小.刚好最近的Solr4.0经过2Bata终于正式版了,我有理由试一试.

先说一下我为什么那么关心Katta,Solrcloud这样的分布式解决方案,因为我们的索引大小已经5.86GB,而且运行在单台机器上,没有索引备份,备份也是手工备份的.而且机器配置是16核心CPU,8G内存.上面还跑着一个Oracle,分给我的内存大小就在3-4G.我们急需要一个分布式搜索的解决方案.

solrcloud的安装和配置在洞庭散人的blog上有介绍: http://www.cnblogs.com/phinecos/archive/2012/02/10/2345634.html

感谢洞庭散人,但是他也是在solr中携带的example上演示solrcloud.下载solr后其中example使用jetty运行的.我总不至于一定要是用jetty吧,我在把例子放到tomcat中运行出现了问题.如下:

我的Tomcat运行在8080端口上,分布式搜索总是在8983端口.造成搜索出现error
好吧,我改端口号8983,然后启动,发现分布式搜索的时使用solr的web实例,而我更改了项目solrl为dsolr了.他没有按照我想要的实例去运行
好吧,我也改成solr运行后,搜索发现他使用nowledgedata-u1:8983/solr这web地址去搜索,不是使用的IP:192.168.1.*:8983/solr去搜索的.机器的hosts文件没有加上IP对应机器名的配置,还是搜索不了…


我把上面的配置都更改了一遍,启动了.也能搜索了.但是就是端口号8983,运行的web实例为solr.我实在不爽,怎么办?

这个问题我也纠结了很久,看了很多Solr的源码,幸好之前研究Katta也接触了很多Solr源码,发现了问题了.

下面是我成功解决上面的问题的一下配置说明.希望对其他人对solrcloud入门有用.当然该配置也可以解决以其他方式运行的问题.

我先启动一个伪分布式的Zookeeper,端口号2181.ZooKeeper的配置见: http://blog.csdn.net/shenlan211314/article/details/6185176

第一个启动的机器在start的脚本中添加:

JAVA_OPTS="$JAVA_OPTS -Xmx512m -Xms512m -Xmn320m -XX:MaxPermSize=128m -XX:PermSize=128m -Dbootstrap_confdir=/data/solr4.0/solrcloud2/collection1/conf -Dcollection.configName=myconf -DzkHost=192.168.1.20:2181 -DnumShards=2"

该服务器启动前必须启动ZooKeeper, 多个zookeeper组成的集群在 -DzkHost=localhost:9983,localhost:8574,localhost:9900. 伪分布式的上面的就好了.

bootstrap_confdir:把该地址下的文件上传到zookeeper集群让所有node共享.

collection.configName:配置的名称,可以随意,符合基本标示符就可以了

numShards:默认为1. 集群中shard的个数,shard才是真正分布式搜索的服务,否则该集群中启动多少台服务器,都是replica, replica只是在该shard挂掉后才起作用

追加的参数:

  1. host:是注册到zookeeper集群的机器名.默认是机器名,可以改成机器的IP,那样就免去了更改系统hosts文件了.
  2. hostPort:注册到zookeeper集群的访问该服务的端口号.默认8983
  3. hostContext:注册到zookeeper集群的访问该服务器的web实例名.默认是solr


好了.其他都没问题,我把hostPort改成8080,分布式搜索的时,该机器上服务注册的端口号还是8983,后来我才发现它并不是指定端口号的,真正起作用的jetty.port.我在tomcat的启动脚本加入-Djetty.port=8080.tomcat在8080上启动.一切OK.达到目的了.

如上图:

我更改了-Dhost=nowladgedata-n1 -Djetty.port=8080 -DhostPort=8080 -DhostContext=dsolr参数后,每次注册到ZooKeeper的配置不一样[因为不是一次改就造成的],造成了很多节点.其实它是一个节点改变了一些信息再次注册后的

可追加关于ZooKeeper的参数:

zkRun:运行单独的ZooKeeper,并且该机器是leader

zkHost:使用该参数则表明需要连接到其他的Zookeeper集群

zkClientTimeout:允许client连接ZooKeeper集群最大的超时时间,也就是说当超过这个时间没有连接上Zookeeper集群,则该Zookeeper集群异常了.

ShardId:默认是shard1,shard2…shard N.当指定该值则注册到ZooKeeper集群使用指定的shardId


好了.Solrcloud分布式搜索就这么简单,后边的问题就是你怎样维护ZooKeeper集群了,同样Solr/Lucene知识也是你需要掌握的

© 著作权归作者所有

震秦
粉丝 192
博文 36
码字总数 35840
作品 0
西安
架构师
私信 提问
加载中

评论(13)

Gookit
Gookit
79收藏先,再消化。
震秦
震秦 博主

引用来自“jkguowen”的评论

大哥,有个疑问啊,我用的也是外部的zookeeper server,就是第一次启动第一个节点时,指定numShards=2参数然后每个shard都有一个备份节点,一共4个节点。那么如果我以后想增加shard数,如何是好啊?因为我发现,重启solrcloud时重新指定numShards=4后,发现这没有用,集群启动后还是2个shard,剩下的还是备份节点。这是什么问题呢?是不是要删除zookeeper server上的某些配置啊??
分片数在第一次启动前设置以后就不能改的
jkguowen
jkguowen
大哥,有个疑问啊,我用的也是外部的zookeeper server,就是第一次启动第一个节点时,指定numShards=2参数然后每个shard都有一个备份节点,一共4个节点。那么如果我以后想增加shard数,如何是好啊?因为我发现,重启solrcloud时重新指定numShards=4后,发现这没有用,集群启动后还是2个shard,剩下的还是备份节点。这是什么问题呢?是不是要删除zookeeper server上的某些配置啊??
震秦
震秦 博主

引用来自“流星划过的瞬间”的评论

哥们,在吗!有关zookeeper和solrcloud的方面的问题想请教一下能否透一下邮箱

zhzhenqin AT gmail.com
流星划过的瞬间
流星划过的瞬间
哥们,在吗!有关zookeeper和solrcloud的方面的问题想请教一下能否透一下邮箱
c
clydqua

引用来自“震秦”的评论

引用来自“clydqua”的评论

我也在尝试使用solr cloud +zookeeper, 但是点击solr index page/cloud/tree,发现错误“Loading of undefined failed with HTTP-Status 404“

404说明你的web服务器启动成功了.ZooKeeper相互的访问不是用过IP,是通过机器名.所以你的在你的集群中每台计算机的hosts文件中写上对应的IP == hostname.

我刚刚尝试使用其内嵌的zookeeper,发现也是同样的错误
震秦
震秦 博主

引用来自“clydqua”的评论

我也在尝试使用solr cloud +zookeeper, 但是点击solr index page/cloud/tree,发现错误“Loading of undefined failed with HTTP-Status 404“

404说明你的web服务器启动成功了.ZooKeeper相互的访问不是用过IP,是通过机器名.所以你的在你的集群中每台计算机的hosts文件中写上对应的IP == hostname.
c
clydqua
我也在尝试使用solr cloud +zookeeper, 但是点击solr index page/cloud/tree,发现错误“Loading of undefined failed with HTTP-Status 404“
震秦
震秦 博主

引用来自“java10001”的评论

引用来自“震秦”的评论

引用来自“java10001”的评论

在使用solr服务内嵌的zookeeper集群时,但是我在逐一启动solr服务时,java -Dbootstrap_confdir=./solr/conf -Dcollection.configName=myconf -DzkRun -DzkHost=localhost:9983,localhost:8574,localhost:9900 -DnumShards=2 -jar start.jar 发现控制台一直报错,说localhost:9983,localhost:8574,localhost:9900无法连接,但是实际上我如果按照集群方式启动,单独启动是没有问题的,启动命令如下:java -Dbootstrap_confdir=./solr/conf -Dcollection.configName=myconf -DzkRun -DnumShards=2 -jar start.jar
其实这个例子是按照solr的wiki例子一步一步来的,不知道你这边出现过类似的情况吗?如果您知道原因请多多指教,谢谢

我不喜欢让他内嵌Zookeeper运行,我启动单独的ZooKeeper实例,solrcloud是在tomcat中运行的.你需要在最先启动的solrcloud的tomcat的jvm参数加上 -Dbootstrap_confdir=./solr/conf -Dcollection.configName=myconf -DzkHost=192.168.1.22:2181 -DnumShards=2运行.第二个solrcloud实例只需要-DzkHost=192.168.1.22:2181启动即可.打开浏览器访问cloud节点,你就能看到有2个shard节点了.

是使用的外部zookeeper集群吗?

是的。
java10001
java10001

引用来自“震秦”的评论

引用来自“java10001”的评论

在使用solr服务内嵌的zookeeper集群时,但是我在逐一启动solr服务时,java -Dbootstrap_confdir=./solr/conf -Dcollection.configName=myconf -DzkRun -DzkHost=localhost:9983,localhost:8574,localhost:9900 -DnumShards=2 -jar start.jar 发现控制台一直报错,说localhost:9983,localhost:8574,localhost:9900无法连接,但是实际上我如果按照集群方式启动,单独启动是没有问题的,启动命令如下:java -Dbootstrap_confdir=./solr/conf -Dcollection.configName=myconf -DzkRun -DnumShards=2 -jar start.jar
其实这个例子是按照solr的wiki例子一步一步来的,不知道你这边出现过类似的情况吗?如果您知道原因请多多指教,谢谢

我不喜欢让他内嵌Zookeeper运行,我启动单独的ZooKeeper实例,solrcloud是在tomcat中运行的.你需要在最先启动的solrcloud的tomcat的jvm参数加上 -Dbootstrap_confdir=./solr/conf -Dcollection.configName=myconf -DzkHost=192.168.1.22:2181 -DnumShards=2运行.第二个solrcloud实例只需要-DzkHost=192.168.1.22:2181启动即可.打开浏览器访问cloud节点,你就能看到有2个shard节点了.

是使用的外部zookeeper集群吗?
搜索引擎(Solr-部署详解)

Solr两种部署模式介绍 Solr的两种部署模式 Solr程序包安装好后,可以以两种模式来启动solr服务器: 1.Standalone Server 独立服务器模式 适用于数据规模不大的场景 2.SolrCloud 分布式集群模...

这很耳东先生
2019/02/14
61
0
Solr总结(三)——Solr集群搭建

Solr是Solr提供的分布式搜索方案,当你需要大规模容错,分布式索引和检索能力时使用SolrCloud。当一个系统的索引数量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高时要使...

一路向前!
04/01
0
0
玩转Apache Solr 6.5.1

以下都是基于linux环境 参考链接:http://lucene.apache.org/solr/quickstart.html 目录: solr 基本命令总结 solr 命令参数详解 solr 查询语法详解 solr schema配置详解 1. solr基本命令总结...

㭍葉
2017/05/31
0
0
分布式全文检索系统SolrCloud简介

前言 本文简单描述SolrCloud的特性,基本结构和入门,基于Solr4.5版本。 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库。Solr是以Lucene为基础实现的文本检索应用服务。 SolrCl...

张升强
2013/11/12
6.4K
3
【SolrCloud】——SolrCloud集群介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fjj15732621696/article/details/81056015 什么是solrcloud solrcloud(solr云)是solr提供的分布式搜索方案,...

DD_Davina
2018/07/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用 Python 读写 Excel 表格,就是这么的简单粗暴且乏味 - 知乎

过去,在很多金融、市场、行政的招聘中,面试官都会问一句:“你精通 EXCEL 吗?” 但今天,他们可能更喜欢问:“你会 Python 吗?” 越来越多的企业开始用 Python 处理数据,特别是金融、证...

osc_pg5rp78i
28分钟前
7
0
知识图谱或成AI发展重点,投研数据整理耗时可从一周缩至一分钟

近日,国内知名的市场调研机构艾瑞咨询集团发布了《中国知识图谱行业研究报告》。报告指出,2019年是知识图谱相关技术飞速发展的一年,其作为集大数据和AI于一身的综合技术,未来将成为重点关...

osc_immhr7su
28分钟前
10
0
DAVINCI DM3730开发攻略——U-BOOT-2010.06的移植

说来惭愧,又很长时间没更新文章了,本来这篇文章可以春节过来搞定的,结果春节回到公司,大客户一直要求抓紧时间设计DM3730平台的720P宽动态低照度相机产品,和另外两款多网口的DM3730产品的...

osc_r94nrknb
29分钟前
19
0
DAVINCI DM3730开发攻略——应用程序例程分析

过完2015年春节回来了,利用上班前的几天时间,先把这篇文章写完,本来是先写《DAVINCI DM3730开发攻略——linux-2.6.32移植》,但是那篇文章涉及内核的东西太多,不太好写,而本人已经很长时...

osc_ictoo263
31分钟前
30
0
DAVINCI DM3730开发攻略——DVSDK4_03和双核CODEC机制介绍

在上篇介绍了DM3730的开发环境,我们现在可以进入设计阶段了。再次声明:本人写这些文章只是给那些爱好DAVINCI的朋友提供一些技术上的支持,缩短大家的学习的时间,让大家有更多剩余的时间做...

osc_zvjde550
32分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部