Configuration Cassandra集群中只有一个节点拥有数据
我不熟悉Cassandra,只运行了一个有5个节点的Cassandra集群(版本1.2.8),我在上面创建了几个键空间和表。但是,我发现所有数据都存储在一个节点中(在下面的输出中,我已手动将ip地址替换为节点号): 在他们的Configuration Cassandra集群中只有一个节点拥有数据,configuration,cassandra,Configuration,Cassandra,我不熟悉Cassandra,只运行了一个有5个节点的Cassandra集群(版本1.2.8),我在上面创建了几个键空间和表。但是,我发现所有数据都存储在一个节点中(在下面的输出中,我已手动将ip地址替换为节点号): 在他们的cassandra.yaml文件中,我使用了除cluster\u name、initial\u-token、endpoint\u-snitch、listen\u-address、rpc\u-address、seeds和节间压缩之外的所有默认设置。下面我列出了我修改的那些非ip
cassandra.yaml
文件中,我使用了除cluster\u name
、initial\u-token
、endpoint\u-snitch
、listen\u-address
、rpc\u-address
、seeds
和节间压缩之外的所有默认设置。下面我列出了我修改的那些非ip地址字段:
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
以及使用相同种子的所有节点
我能知道在配置中哪里可能出错吗?如果需要任何其他信息来解决问题,请随时告诉我
谢谢大家! 在创建键空间时,您应该提供一个复制\u因子
:
创建键空间解调器
使用REPLICATION={'class':'SimpleStrategy','REPLICATION\u factor':3};
如果在cqlsh
中使用description KEYSPACE x
,您将看到当前为您的键空间设置了什么replication\u factor
(我假设答案为1)
更多详细信息您的令牌分配是这里的问题。分配的令牌用于确定节点在环中的位置及其存储的数据范围。当您生成令牌时,目标是使用从0到(2^127-1)的整个范围。令牌与mysql集群的id不同,在mysql集群中,您必须按顺序递增令牌
有一种方法可以帮助您根据集群的大小计算令牌
阅读以加深对标记的理解。如果您想了解生成的数字的含义。如果您从Cassandra 1.2.8开始,您应该尝试使用vnodes功能。与其设置初始标记
,不如取消cassandra.yaml中的num_标记:256
,并将初始标记
保留为空,或将其注释掉。那么你就不必计算代币的位置了。每个节点将随机为自己分配256个令牌,您的集群将基本上处于平衡状态(在几%之内)。使用VNode还意味着不必在每次添加或删除节点时“重新平衡”集群
有关VNode及其工作方式的完整描述,请参阅此博客帖子:
但即使复制系数为1,一个键空间中的数据是否应分布到多个节点?否。对于复制系数1,数据中心内不会进行数据复制
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