【问题标题】:Data Re-Partitioning in CassandraCassandra 中的数据重新分区
【发布时间】:2018-05-17 15:09:13
【问题描述】:

作为Data Partition in Cassandra 的后续工作,我想到了 vNode。感谢“西蒙·丰塔纳·奥斯卡森”

当我尝试使用 vNode 探索数据分区时,我有几个问题,

我尝试观察 2 个节点的分区分布 (./nodetool ring)

Two seed nodes (2 node)

172.30.56.61  rack1       Up     Normal  105.19 KiB      100.00%             -9207297847862311651                        
172.30.56.61  rack1       Up     Normal  105.19 KiB      100.00%             -9185516104965672922                        
172.30.56.61  rack1       Up     Normal  105.19 KiB      100.00%             -9135483708655236026                        
172.30.56.60  rack1       Up     Normal  102.77 KiB      100.00%             -9106737079237505681                        
172.30.56.61  rack1       Up     Normal  105.19 KiB      100.00%             -9078521344187921602                        
172.30.56.61  rack1       Up     Normal  105.19 KiB      100.00%             -9051897156173923903                        
172.30.56.61  rack1       Up     Normal  105.19 KiB      100.00%             -9049800264451581717                        
172.30.56.61  rack1       Up     Normal  105.19 KiB      100.00%             -9039572936575206977                        
172.30.56.60  rack1       Up     Normal  102.77 KiB      100.00%             -9019927187583981555                        
172.30.56.60  rack1       Up     Normal  102.77 KiB      100.00%             -9006071175095726599                        
172.30.56.60  rack1       Up     Normal  102.77 KiB      100.00%             -8995415525773810853                        
172.30.56.60  rack1       Up     Normal  102.77 KiB      100.00%             -8949342263103866059                        
172.30.56.61  rack1       Up     Normal  105.19 KiB      100.00%             -8880432529087253108                        
172.30.56.61  rack1       Up     Normal  105.19 KiB      100.00%             -8859265089807316498                        
172.30.56.61  rack1       Up     Normal  105.19 KiB      100.00%             -8844286905987198633                        
172.30.56.61  rack1       Up     Normal  105.19 KiB      100.00%             -8832739468389117376      

因此,根据我在两个节点中的观察,当一个范围继续时,节点 61 的值从 -9207297847862311651 到 -9185516104965672922...

注意:从“-9039572936575206977”到“-9019927187583981554”的分区范围目前由节点 61 处理。

现在我要向集群添加一个节点(不是种子节点),然后运行 ​​./nodetool ring

Two seed nodes with one new node (3 node)

172.30.56.61  rack1       Up     Normal  104.12 KiB      64.73%              -9207297847862311651                        
172.30.56.61  rack1       Up     Normal  104.12 KiB      64.73%              -9185516104965672922                        
172.30.56.61  rack1       Up     Normal  104.12 KiB      64.73%              -9135483708655236026                        
172.30.56.60  rack1       Up     Normal  102.77 KiB      63.57%              -9106737079237505681                        
172.30.56.61  rack1       Up     Normal  104.12 KiB      64.73%              -9078521344187921602                        
172.30.56.61  rack1       Up     Normal  104.12 KiB      64.73%              -9051897156173923903                        
172.30.56.61  rack1       Up     Normal  104.12 KiB      64.73%              -9049800264451581717                        
172.30.56.61  rack1       Up     Normal  104.12 KiB      64.73%              -9039572936575206977                        
172.30.56.62  rack1       Up     Normal  103.7 KiB       71.70%              -9031848008695747480                        
172.30.56.62  rack1       Up     Normal  103.7 KiB       71.70%              -9028974600706382491                        
172.30.56.60  rack1       Up     Normal  102.77 KiB      63.57%              -9019927187583981555    

现在我观察到新节点 Node 62 被赋予了相同的分区范围, ,范围从 -9039572936575206977 到 -9031848008695747480 由节点 61 处理,但 -9031848008695747480 到 -9019927187583981555 由节点 62(新节点)处理,

1) 那么这是否意味着,在集群中添加一个新节点会分配现有的分区范围?

2) 有没有办法使用 nodetool 之类的工具来观察 Cassandra 中的复制分区?

3) 我有 3 个节点,RF 为 2,如何仅在节点 62 中查看数据?

【问题讨论】:

    标签: cassandra cassandra-3.0


    【解决方案1】:

    1) 添加节点时,Cassandra 将首先选择合适的范围供新节点接管。然后它将创建 256 个新令牌范围,这些只是现有令牌范围的一部分。这意味着新节点从集群中的许多节点(而不是在不使用 vnode 时每个 RF 仅一个)获取令牌,这使得流式传输更快。

    2 和 3) 这是否回答了您的问题? determine node of a partition in Cassandra

    【讨论】:

    • 第 2 点和第 3 点太棒了,但我不相信第 1 点,例如:您说节点 1 将具有从 1 到 100 的分区,而节点 3(新添加的)节点可以有从 50 到 100 的分区,如果是这样,复制是如何在其中发生的?
    • 另外我能解释一下它的优点吗?我没有明白你的流媒体的意思:(
    • 节点 1 会将其数据(使用令牌 50-100)流式传输到节点 3。它仍然保留数据但不对其负责,因此它只占用空间,直到您执行“nodetool cleanup” .流式传输:我的意思是与多个节点共享多个令牌而不是与几个节点共享一个令牌是好的。想象一下替换 30 节点集群中的故障节点。使用 vnode,您的替换节点可以同时从许多节点流式传输,从而加快流程并分散增加的负载。如果没有 RF 3 和 vnode,则只有 2 个节点保存该数据。
    猜你喜欢
    • 2018-05-15
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多