您现在的位置是:主页 > 数据库技术 > 数据库技术

怎么对SolrCloud集群Collection进行手动二次Sharding

IDCBT2021-12-24服务器技术人已围观

简介本篇内容主要讲解“怎么对SolrCloud集群Collection进行手动二次Sharding ”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么对SolrCl

本篇内容主要讲解“怎么对SolrCloud集群Collection进行手动二次Sharding ”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么对SolrCloud集群Collection进行手动二次Sharding ”吧!

基于SolrCloud 4.3.1+Tomcat 7搭建了搜索服务器集群,一个Collection对应3个节点上的3个分片(Shard),同时包含对应分片的副本(Replica),此时,该 Collection一共有6000万左右Document,平均每个分片大约接近2000万。

SolrCloud集群节点的具体分布,如图所示:


只有shard1有一个副本,并且位于不同的节点上。

随着索引数据量的增长,如果我们的Collection的每个分片都不断的增大,最后导致单个分片在搜索的时候,相应速度成为瓶颈,那么,我们 要考虑将每个分片再次进行分片。因为第一次系统规划时已经设置好分片数量,所以每个分片所包含的Document数量几乎是相同的,也就是说,再次分片 后,重新得到的分片的数量是原来的二倍。

目前,SolrCloud不支持自动分片,但是支持手动分片,而且手动分片后得到的新的分片所包含的Document数量有一定的差异(还不清 楚SolrCloud是否支持手动分片后大致均分一个分片)。下面,我们看一下,在进行手动分片过程中,需要执行哪些操作,应该如何重新规划整个 SolrCloud集群。

首先,我增加了一个节点(slave6 10.95.3.67),把集群中原来的配置文件、solr-cloud.war及其Tomcat服务器都拷贝到这个新增的节点上,目的是将 10.95.3.62上的shard1再次分片,然后将再次得到分片运行在新增的10.95.3.67节点上。启动新增节点的Tomcat服务器,它自动 去连接ZooKeeper集群,此时ZooKeeper集群增加live_nodes数量,主要是通过在Tomcat的启动脚本中增加如下内容:

JAVA_OPTS="-server -Xmx4096m -Xms1024m -verbose:gc -Xloggc:solr_gc.log -Dsolr.solr.home=/home/hadoop/applications/solr/cloud/multicore -DzkHost=master:2188,slave1:2188,slave4:2188"

这样,就能告知ZooKeeper集群有新节点加入SolrCloud集群。

如上图所示,我们打算将shard1进行二次手动分片,执行如下命令即可:

curl 'http://master:8888/solr-cloud/admin/collections?action=SPLITSHARD&collection=mycollection&shard=shard1'

这个过程花费的时间比较长,而且可能会伴有如下异常相应信息:

[html] view plaincopy

    <?xml version="1.0" encoding="UTF-8"?>  

    <response>  

    <lst name="responseHeader"><int name="status">500</int><int name="QTime">300138</int></lst><lst name="error"><str name="msg">splitshard the collection time out:300s</str><str name="trace">org.apache.solr.common.SolrException: splitshard the collection time out:300s  

    标签:

    很赞哦! ()

本栏推荐