无法找到足够的流媒体范围来源

时间:2013-07-31 10:43:21

标签: cassandra

有4个节点集群,有2个种子。使用cassandra 1.2.5。考虑在每个簇中制作2个具有1个种子的节点的2个簇。

退役,更改了cassandra.yaml文件中的种子并删除了数据和commitlog目录并重新启动,一个节点启动正常,第二个节点显示两个集群。

INFO 10:28:37,241 JOINING: sleeping 30000 ms for pending range setup
INFO 10:29:07,242 JOINING: Starting to bootstrap...
ERROR 10:29:07,324 Exception encountered during startup
  

java.lang.IllegalStateException:无法找到足够的源   流媒体范围(5253604194908817102,5256320442405919104)

2 个答案:

答案 0 :(得分:5)

如果您的所有数据都已清除且您正在设置新节点,则应该会遇到以下异常:

  

java.lang.IllegalStateException:无法找到足够的流媒体范围来源(5253604194908817102,5256320442405919104)

异常意味着您没有足够的数据在所需范围内发送,例如,如果您在4节点群集中的某个键空间具有复制因子1并且您删除了2个节点,则您将无法流退役节点丢失的某些范围。

根据我的理解,你正试图这样做:

Original Cluster:
Cluster A (x2 seeds) [node1, node2, node3, node4]

New Cluster(s):
Cluster A (x1 seed) [node1, node2] <-- no data
Cluster B (x1 seed) [node1, node2] <-- no data

表示您从原始群集中删除了1个种子,并且已停用2个节点。然后,在他们自己的集群(集群B)中添加了已退役的2个节点。对于所有4个节点,您删除了数据目录/提交日志。

如果您这样做,则不应该传输任何数据。这意味着您可能没有删除所有数据目录。我的建议是使用C *的干净安装,只为每个1个种子节点的2个集群的新基础设施配置cassandra.yaml

答案 1 :(得分:0)

转到/var/lib/cassandra/data/system目录并删除除%schema%以外的所有子目录。使用

rm -rf batchlog compaction_history compactions_in_progress hints IndexInfo local NodeIdInfo paxos peer_events peers range_xfers sstable_activity

并重新启动cassandra节点。