solr cloud异常与处理
启动solr cloud ,启动到一半发现抛出这样的异常:ZkController.java第1087行代码"Could not find configName for collection " + collection + " found:" + configNames 原因在于solr cloud 集群在启动的过程中需要加载zookeeper中的
- 启动solr cloud ,启动到一半发现抛出这样的异常:ZkController.java第1087行代码
"Could not find configName for collection " + collection + " found:" + configNames 原因在于solr cloud 集群在启动的过程中需要加载zookeeper中的 collections core状态配置信息,因为在zk中还没有初始化,所以启动的时候发现配置信息是空的,solr连续尝试四次之后就会抛一个ZooKeeperException异常。
解决办法是,在启动命令行中添加一个
-Dcollection.configName=clusterconf -Dbootstrap_confdir=./solr/collection1/conf 的配置项,solr在启动的时候就会自动将目标配置文件夹下的schema solrconfig 等配置信息同步到zookeeper节点上。完整的solr启动命令如下:- java -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.
- configName=twoShardsTwoReplicasConf -DnumShards=2
- -DzkHost=192.168.0.10:9983/baisui -jar start.jar
-
当应用启动好之后,solr core中已经有一份索引了,然后在solr管理页面(http://localhost/solr/#/collection1/query)上执行查询操作,抛了以下这个异常:
- 2013-5-2 10:22:04 org.apache.solr.common.SolrException log
- 严重: org.apache.solr.common.SolrException: no servers hosting shard:
- at org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:162)
- at org.apache.solr.handler.component.HttpShardHandler$1.call(HttpShardHandler.java:135)
- at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
- at java.util.concurrent.FutureTask.run(FutureTask.java:138)
- at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
- at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
- at java.util.concurrent.FutureTask.run(FutureTask.java:138)
- at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
- at java.lang.Thread.run(Thread.java:619)
接下来再说如何解决上面那个异常,其实很简单,因为在初始化的时候设置了sharedNumber的数量为2,刚开始只启动了一台服务器,在查询的时候,在zookeeper中livenode节点中只有一台,还没有满足solrcloud最小shared为2的要求。所以在进行查询的时候抛出这个异常很正常,解决办法是再启动一个solr节点,启动命令是java -DzkHost=10.232.15.46:2181,10.232.36.130:2181/baisui -Djetty.port=80 -jar start.jar, 应用启动的时候自动会到zookeeper中的节点配置信息。第二个solr节点正常启动后,可以正常进行查询操作了。
需要说明的是一个应用在初始化之后,sharedNumber数目就不能变了,但是 一个share中的副本是可以添加或者减少的。
- 删除cluster中的 Collection
curl 'http://localhost:8983/solr/admin/collections?action=DELETE&name=userscollection' 试验了一下果然是可以删除的,但是在zookeepr的节点上查看还是刚刚生成的schema,solrconfig等配置文件还是存在的没有被删除掉。但是本地文件夹collection中的config 目录被删除了,重新启动solr container会出错。类似这样的维护solr应用的命令使用起来倒是挺方便的,但是感觉如果是线上应用的话这样调用起来也非常危险,一个不小心就把一个collection给删除了,那就摊上大事儿了
更多推荐
所有评论(0)