【问题标题】:Solandra Sharding: Insider ThoughtsSolandra 分片:内部想法
【发布时间】:2011-12-24 13:39:52
【问题描述】:

刚开始使用 Solandra 并试图了解第二个 Solandra 分片的级别详细信息。

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

【问题讨论】:

    标签: solandra


    【解决方案1】:

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

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

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

    回答你的观点:

    1. 这只会从一个节点导入。但它会一次索引多个分片。

    2. 我认为问题是您应该跨所有节点编写吗?是的。

    3. 是的,见上文。

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

    【讨论】:

    • 谢谢杰克。到目前为止,我在 Solnadra 很漂亮,我还有另一个给你:stackoverflow.com/questions/8962953/…
    • Jake 在当前设置中,我有 300K 文档,并且一次分片为 1,最大文档再次默认为 ~1m。我有 7 个带有 RF:7 的节点集群,所以现在如果我需要跨 cassandra 集群分发数据,我需要将 RF 减少到 3,我还需要减少 max_doc 大小,因为理想情况下,如果总文档
    猜你喜欢
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 2016-10-08
    • 2023-03-28
    • 1970-01-01
    • 2017-12-25
    • 2023-03-03
    相关资源
    最近更新 更多