强制 Cassandra 保存要分区到特定节点的特定键值。

Force Cassandra to save particular key values to be partitioned to Specific node.

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

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

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

更改cassandra.yaml文件中的设置"initial_token"我们可以让节点被划分为关键范围,分区将选择要保存数据和策略的第一次复制的节点class SimpleStrategy 会将副本添加到后续节点,因此通过按照您希望的方式安排节点,您可以利用复制策略。

I want my data starting with particular ID to be at a predefined node because I know data will be accessed from that node heavily.

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

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

  • 如果你的节点宕机了怎么办?
  • 数据在集群中的分布有多均匀?会不会有任何 hotspots/bottlenecks 因为节点过度(不足)使用?
  • 您将来如何扩展您的集群?

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