首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有一个节点拥有Cassandra集群中的数据。

只有一个节点拥有Cassandra集群中的数据。
EN

Stack Overflow用户
提问于 2013-08-10 04:17:25
回答 3查看 1.8K关注 0票数 1

我刚接触过Cassandra,只运行了一个带有5个节点的cassandra集群(版本1.2.8),并在其中创建了几个键空间和表。但是,我发现所有数据都存储在一个节点中(在下面的输出中,我手动地用节点号替换了ip地址):

代码语言:javascript
复制
Datacenter: 105
==========
Address         Rack        Status State   Load            Owns                Token
                                                                               4
node-1          155         Up     Normal  249.89 KB       100.00%             0
node-2          155         Up     Normal  265.39 KB       0.00%               1
node-3          155         Up     Normal  262.31 KB       0.00%               2
node-4          155         Up     Normal  98.35 KB        0.00%               3
node-5          155         Up     Normal  113.58 KB       0.00%               4

在他们的cassandra.yaml文件中,我使用除cluster_nameinitial_tokenendpoint_snitchlisten_addressrpc_addressseedsinternode_compression之外的所有默认设置。下面我列出了我修改过的非ip地址字段:

代码语言:javascript
复制
endpoint_snitch: RackInferringSnitch
rpc_address: 0.0.0.0
seed_provider:
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          - seeds: "node-1, node-2"
internode_compression: none

所有使用相同种子的节点。

我能知道我在配置中可能做错了什么吗?如果需要更多的信息来解决问题,请随时通知我。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-10 16:02:50

如果您是从Cassandra 1.2.8开始的,您应该尝试使用vnodes特性。与其设置initial_token,不如在cassandra.yaml中取消注释# num_tokens: 256,并将initial_token保留为空白,或者将其注释掉。那么你就不用计算令牌位置了。每个节点将随机分配自己256个令牌,并且您的集群将大部分是平衡的(在几%内)。使用nodes还意味着您不必在每次添加或删除节点时“重新平衡”集群。

有关vnodes及其工作方式的完整描述,请参阅这篇博客文章:

http://www.datastax.com/dev/blog/virtual-nodes-in-cassandra-1-2

票数 2
EN

Stack Overflow用户

发布于 2013-08-10 12:30:34

您的令牌分配是这里的问题。所分配的令牌用于确定节点在环中的位置及其存储的数据范围。当您生成令牌时,目标是耗尽从0到(2^127-1)的整个范围。令牌与mysql集群中的id不一样,在这种情况下,必须按顺序递增它们。

有一个git上的工具可以帮助您根据集群的大小计算令牌。

阅读这篇文章以加深对令牌的理解。如果您想了解生成查查这篇文章的数字的含义。

票数 1
EN

Stack Overflow用户

发布于 2013-08-10 08:20:04

在创建密钥空间时,应该提供一个replication_factor

CREATE KEYSPACE demodb WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor': 3};

如果在DESCRIBE KEYSPACE x中使用cqlsh,您将看到当前为您的密钥空间设置了什么replication_factor (我假设答案是1)。

更多细节这里

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18158575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档