Cassandra 卡桑德拉与赫克托问题

Cassandra 卡桑德拉与赫克托问题,cassandra,cluster-computing,hector,Cassandra,Cluster Computing,Hector,我在1个节点上安装了Cassandra,并用大量数据填充它。然后我配置了第二个节点、它的初始令牌、种子等,并在其上启动了Cassandra。 现在,当我在1节点集群上运行Hector代码时,它提供了所有数据。但当我在2节点集群上运行相同的代码时,我得到的数据更少(列和行的数量更少)。我不明白我做错了什么。 我甚至尝试使用CassandraHostConfigurator添加一系列主机,但仍然无法获得全部数据。 我也试过运行nodetool修复,但仍然面临同样的问题 请帮助我当您将节点添加到集群中

我在1个节点上安装了Cassandra,并用大量数据填充它。然后我配置了第二个节点、它的初始令牌、种子等,并在其上启动了Cassandra。 现在,当我在1节点集群上运行Hector代码时,它提供了所有数据。但当我在2节点集群上运行相同的代码时,我得到的数据更少(列和行的数量更少)。我不明白我做错了什么。 我甚至尝试使用CassandraHostConfigurator添加一系列主机,但仍然无法获得全部数据。 我也试过运行nodetool修复,但仍然面临同样的问题


请帮助我

当您将节点添加到集群中时,您应该使用
auto_bootstrap:true
cassandra.yaml中,以便集群中的其他节点(在您的情况下,唯一的节点)将数据流传输到新节点(根据令牌)

编辑对于Casssandra-1.0以后的版本,没有作为引导的选项。在这种情况下,我们必须启动第二个节点并计算新的令牌,它将启动数据流。一旦完成数据流,运行
nodetool move
。有关更多信息,请参阅

如果不这样做,则第二个节点将不具有根据令牌应该持有的数据。当您尝试从Cassandra中读取数据时,它可能会根据令牌在新添加的节点上查找数据,但由于没有数据,您无法获得正确的结果。

  • 请检查所有防火墙,iptables配置为接受节点与其他节点通信
将节点添加到环后,使用
nodetool-ring
查看数据加载示例“我的群集有3个节点”结果将类似:

192.168.23.84数据中心1机架1正常运行37.52 GB 33.33%
192.168.23.85数据中心1机架1正常运行37.5 GB 33.33%
192.168.23.86 datacenter1机架1正常增长37.5 GB 33.33%

如果与此类似,当您使用hector时,请使用此代码检查hector向哪个服务器请求:

MutationResult result = mutator.execute();
logger.info(" host:" + result.getHostUsed().getHost());
尝试多次写入以重新检查目标主机是否包含所有主机

当使用Hector时,我使用这个CassandraHostConfigurator向集群添加许多主机 例如:

CassandraHostConfigurator cassandraHostConfigurator = new CassandraHostConfigurator(
                "192.168.23.84:9160,192.168.23.85:9160,192.168.23.86:9160");
cluster = HFactory.getOrCreateCluster("testcluster", cassandraHostConfigurator);

但是在Cassandra 1.1.0中没有自动引导选项。那么我在哪里指定这个选项呢?