当前位置: 首页 > 知识库问答 >
问题:

Cassandra中的数据重新分区

谷梁建中
2023-03-14

作为卡桑德拉数据分区的后续,我得到了vNodes的想法。感谢“西蒙·丰塔纳·奥斯卡森”

当我尝试使用vNodes进行数据分区时,我有几个问题,

我尝试观察2节点中的分区分布(./nodetool环

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处理。

现在,我要向集群中再添加一个节点(不是种子节点),并运行< code >。/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    

现在我观察到,为新节点节点 62 提供了相同的分区范围,即从 -9039572936575206977 到 -9031848008695747480 的范围由节点 61 处理,但 -9031848008695747480 到 -9019927187583981555 由节点 62(新节点)处理,

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

2) 有没有一种方法可以使用nodetool之类的工具来观察Cassandra中的复制分区?

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

共有1个答案

楚权
2023-03-14

1)当添加节点时,Cassandra将开始为新节点选择好的范围来接管。然后,它将创建256个新的令牌范围,这些范围只是现有范围的一部分。这意味着新节点从集群中的许多节点获取令牌(而不是在不使用vnode时每个RF只获取一个令牌),这使得流传输速度大大提高。

2和3)这能回答你的问题吗?在Cassandra中确定分区的节点

 类似资料:
  • UPDATE命令用于更新Cassandra表中的数据。 如果在更新数据后看不到任何结果,则表示数据成功更新,否则将返回错误。 在更新Cassandra表中的数据时,通常使用以下关键字: :WHERE子句用于选择要更新的行。 :SET子句用于设置值。 :它用于包括构成主键的所有列。 语法: 又或者 - 注意:使用UPDATE命令并且给定的行可用时,UPDATE会创建一个新行。 示例: 我们举个例子来

  • 我的假设是,首先,spark会从cassandra读取数据,因此在这个阶段,cassandra的大分区不会因为重新分区而分裂。重新分区将对从Cassandra加载的基础数据起作用。 我只是想知道答案,当从spark读取数据时,重新分区是否会改变数据分布,而不是再次进行分区?

  • 我在localhost上设置了一个分片的mongo db环境,有3个配置服务器、2个分片的mongo实例和一个mongos。 集群启动后,我运行以下命令序列: 我启用数据库进行分片,并创建一个索引等。 以上所有操作的结果都是成功的。 但是一旦我做到了:db.foo.stats() 我看到所有的数据都在一个分片中结束,而没有被分发。和运行 生产: 然而,有趣的是,如果我从一个空白集合开始,并在向其中

  • 假设我有一张桌子,像这样: 这遵循了所需的Cassandra模式,跨分区分布良好(假设默认的Murmur3哈希分区器)。 但是,我也需要(很少)按时间顺序执行范围查询。这在Cassandra中似乎是不可能的。实际上,我确实需要按组访问数据,所以是可以接受的。由于似乎没有办法让辅助索引有多个列,我想正确的做法是将其反规范化,如下所示: 除了< code>group基数很低,比方说< code>('A

  • 我有一个具有如下模式的dataframe:

  • 我安装了一个3节点Cassandra (2.0.3)群集,这是我的表格: 我用datastax java驱动 这是我创建的用户对象: 我创建了其中的10k - i是我的用户数组中的用户的索引。我不想使用批量插入,而是模拟插入多个记录的压力。这是我的代码: < li >计算记录数量时(使用cqlsh),我从未超过4k(10k中) < li >只有一台服务器进行写入(使用opscenter写入请求/所