SOLR没有活动切片服务哈希码

时间:2015-10-12 05:38:23

标签: solr apache-zookeeper solrcloud

我们的架构是SOLRCloud 4.4,包含1个集合和多个分片和复制品 最近我们收到了一些文件:

org.apache.solr.common.SolrException: No active slice servicing hash code 7b50d0a2 in DocCollection(collection1)={
"shards":{
"shard1":{
  "range":"80000000-d554ffff",
  "state":"active",
  "replicas":{
    "core_node1":{
      "state":"active",
      "core":"collection1",
      "node_name":"XX.XXX.XXX.131:8983_solr",
      "base_url":"http://XX.XXX.XXX.131:8983/solr",
      "leader":"true"},
    "core_node7":{
      "state":"active",
      "core":"collection1",
      "node_name":"XX.XXX.XXX.131:9983_solr",
      "base_url":"http://XX.XXX.XXX.131:9983/solr"}}},
"shard2":{
  "range":"d5550000-2aa9ffff",
  "state":"active",
  "replicas":{
    "core_node5":{
      "state":"active",
      "core":"collection1",
      "node_name":"XX.XXX.XXX.133:8983_solr",
      "base_url":"http://XX.XXX.XXX.133:8983/solr"},
    "core_node8":{
      "state":"active",
      "core":"collection1",
      "node_name":"XX.XXX.XXX.132:8983_solr",
      "base_url":"http://XX.XXX.XXX.132:8983/solr",
      "leader":"true"}}},
"shard3":{
  "range":null,
  "state":"active",
  "replicas":{
    "core_node6":{
      "state":"active",
      "core":"collection1",
      "node_name":"XX.XXX.XXX.133:9983_solr",
      "base_url":"http://XX.XXX.XXX.133:9983/solr"},
    "core_node9":{
      "state":"active",
      "core":"collection1",
      "node_name":"XX.XXX.XXX.132:9983_solr",
      "base_url":"http://XX.XXX.XXX.132:9983/solr",
      "leader":"true"}}}},

“路由器”: “compositeId”}

通过阅读有关Solr和Zookeeper的内容,我了解到zookeeper正在尝试索引处于故障状态的分片上的文档?因此它失败了?但是当我通过网络浏览器查看状态时,所有分片都处于有效状态的在线状态。

1 个答案:

答案 0 :(得分:1)

对于所有关注的人,经过调查并阅读手册如何管理zookeeper / lucene / solr 当solr云中有多个分片时,每个分片都有一个范围,当文档被索引时,它被添加到具有键的特定分片上,该键不是添加到solr的文档ID。此密钥是solr用来决定存储文档的碎片以及稍后检索它的散列码 每个分片都有一个范围,当solr添加文档时,它会为文档生成哈希代码id并查找该范围的分片填充。
在我的问题中,我们可以看到碎片#3范围为空,意味着发生了一些不好的事情,这个碎片将无法正常运行(或者根本没有)。
我转换为从十六进制到十进制的碎片范围编号,并找到以下范围:

shard 1: "range":"80000000-d554ffff", Decimal: 2147483648 - 3579117567
shard 2: "range":"d5550000-2aa9ffff", Decimal: 3579117568 - 715784191
shard 3:  ITS NULL, but should be: "range":"0-7FFFFFFF",       Decimal: 0 - (2147483648-1)
Paramteter from exception: 7B50D0A2 -> 2068893858 

我们可以看到需要使用适当的范围重新定义#3碎片 怎么做 - 更新zookeeper上的clusterstate.json 这样做安全吗?我不知道。