1

刚开始使用 Solandra,并试图了解 Solandra 分片的 2 级细节。

AFAIK Soalndra 创建配置的分片数量(作为“solandra.shards.at.once”属性),其中每个分片的大小最大为“solandra.maximum.docs.per.shard”。

在下一个级别,它开始在每个分片内创建插槽,这些插槽由“solandra.maximum.docs.per.shard”/“solandra.index.id.reserve.size”定义。

我从 SchemaInfo CF 的数据模型中了解到,在特定的分片内,有不同物理节点拥有的插槽,这是节点之间为获取这些插槽而发生的竞争。

我的问题是:

  1. 这是否意味着如果我请求在特定的 solr 节点上写入,例如 . ....solandra/abc/dataimport?command=full-import此请求是否会分发到所有可能的节点等。这是分布式写入吗?因为在这种情况发生之前,其他节点将如何竞争特定分片内的插槽。理想情况下,用于编写文档或一组文档的代码将在单个物理 JVM 上执行。

  2. 通过分片,我们尝试在单个物理节点上编写一些文档,但是如果它是基于不同物理节点拥有的插槽进行编写,那么我们实际上实现了什么,因为我们再次需要从不同的节点获取结果。我了解写入吞吐量已最大化。

  3. 我们可以考虑调整这些数字吗?“ solandra.maximum.docs.per.shard”,“ solandra.index.id.reserve.size","solandra.shards.at.once”。

  4. 如果我在单个 DC 6 节点设置中只有一个分片和复制因子为 5,我看到这个分片的端点包含 5 个根据复制因子的端点。但是第 6 个会发生什么。我通过nodetool看到左边第6个节点并没有真正得到任何数据。如果我在保持集群开启的同时将复制因子增加到 6,这会解决问题并进行修复等,还是有更好的方法。

4

1 回答 1

0

总体而言,shards.at.once 参数用于控制索引的并行性。该数字越高,一次写入的分片就越多。如果将其设置为 1,您将始终只写入一个分片。通常这应该设置为 20% > 集群中的节点数。所以对于一个四节点集群将它设置为五个。

保留大小越高,节点之间需要的协调就越少。所以如果你知道你有很多文件要写,那就提出来。

docs.per.shard 越高,对给定分片的查询就越慢。一般来说,这应该是最大 1-5M。

回答你的观点:

  1. 这只会从一个节点导入。但它会同时根据分片索引许多分片。

  2. 我认为问题是你应该在所有节点上写吗?是的。

  3. 是的,见上文。

  4. 如果你增加 shards.at.once 这将很快被填充

于 2012-01-04T14:22:16.173 回答