SOLR 无活动切片服务哈希码
SOLR No active slice servicing hash code
我们的架构是 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"}}}},
"router":"compositeId"}
通过阅读有关 Solr 和 Zookeeper 的文章,我了解到 Zookeeper 正在尝试为处于故障状态的分片上的文档编制索引?因此它失败了?但是当我通过网络浏览器查看状态时,所有碎片都在线且状态有效。
对于所有关心的人,在调查和阅读手册后 zookeeper/lucene/solr 是如何工作的。
当solr cloud中有多个分片时,每个分片都有一个范围,当一个文档被索引时,它是用一个键添加到特定的分片上的,该键不是添加到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。
这样做安全吗?我不知道。
我们的架构是 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"}}}},
"router":"compositeId"}
通过阅读有关 Solr 和 Zookeeper 的文章,我了解到 Zookeeper 正在尝试为处于故障状态的分片上的文档编制索引?因此它失败了?但是当我通过网络浏览器查看状态时,所有碎片都在线且状态有效。
对于所有关心的人,在调查和阅读手册后 zookeeper/lucene/solr 是如何工作的。
当solr cloud中有多个分片时,每个分片都有一个范围,当一个文档被索引时,它是用一个键添加到特定的分片上的,该键不是添加到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。
这样做安全吗?我不知道。