【问题标题】:Force Cassandra to save particular key values to be partitioned to Specific node.强制 Cassandra 保存要分区到特定节点的特定键值。
【发布时间】:2016-02-29 10:29:01
【问题描述】:

如何使用 ByteOrderedPartitioner (BOP) 强制根据自定义要求对特定键值进行分区。我想强制 Cassandra 根据自定义要求对数据进行分区和复制,而不引入自定义分区器我可以控制这种行为的程度以及如何控制?

总体而言:我希望以特定 ID 开头的数据位于预定义节点,因为我知道该节点会大量访问数据。还喜欢将数据复制到附近的节点。

【问题讨论】:

    标签: cassandra replication database-replication database-partitioning partition


    【解决方案1】:

    我希望以特定 ID 开头的数据位于预定义节点,因为我知道该节点会大量访问数据。

    看起来您在谈论数据局部性问题,这在类似大数据的计算(Spark、Hadoop 等)中非常重要。但一般的方法不是将数据固定到特定节点,而只是将整个计算转移到数据本身。

    将数据固定到特定节点可能会导致以下问题:

    • 如果您的节点出现故障该怎么办?
    • 数据在集群中的分布有多均匀?是否会因为节点过度(不足)使用而出现任何热点/瓶颈?
    • 将来如何扩展集群?

    将计算转移到数据对这些问题没有任何问题,但是您要选择的方法 - 有。

    【讨论】:

    • 你能给我一个移动整个计算逻辑的例子吗,这似乎是一个很好的解决方案。在我当前的模型中,如果节点出现故障,我会将数据复制到节点附近作为问题的解决方案,总体而言,我通过固定数据创建 hotspots,这样 NoSQL 数据库就不必找到其他任何地方(这是对数据读取位置的保证)。 可扩展性 - 是的,这将是一个问题。如果我错了,并且有可能提供更好的模型,请纠正我。
    【解决方案2】:

    在这里找到答案... http://www.mail-archive.com/user%40cassandra.apache.org/msg14997.html

    更改cassandra.yaml文件中的“initial_token”设置,我们可以让节点被划分为键范围,分区将选择要保存数据的第一个副本的节点,策略类SimpleStrategy将添加副本处理节点,因此通过按照您想要的方式排列节点,您可以利用复制策略。

    【讨论】:

      猜你喜欢
      • 2014-12-12
      • 2017-05-03
      • 2018-09-22
      • 2018-07-22
      • 1970-01-01
      • 2019-01-02
      • 2018-09-29
      • 2014-05-13
      • 1970-01-01
      相关资源
      最近更新 更多