Cassandra在选择表格中的数据时发出错误" NoHostAvailable:"

时间:2017-08-01 08:39:25

标签: cassandra cassandra-3.0

我创建了密钥空间,并使用Cassandra 3.0服务器创建了一个表。我正在使用3节点架构。其中三台服务器正在工作,能够连接3个节点。但是,当我使用CQL插入或选择数据时,它显示错误,说明" NoHostAvailable:"。请有人能告诉我这个问题的原因和解决方案。

拓扑

nodetool status输出

UN 172.30.1.7 230.22 KB 256 ? 2103dcd3-f09b-47da-a187-bf28b42b918e rack1 
DN 172.30.1.20 ? 256 ? 683db65d-0836-40e4-ab5b-fa0db20bae30 rack1 
DN 172.30.1.2 ? 256 ? 2b1f15d1-2f92-41ef-a03e-0e5f5f578cf4 rack1

模式

KEYSPACE

CREATE KEYSPACE test WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 2};

CREATE TABLE testrep(id INT PRIMARY KEY);

1 个答案:

答案 0 :(得分:0)

请注意,从nodetool状态,3个节点群集中有2个已关闭(DN)。 您可能正在插入无法满足的一致性级别。

nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens       Owns    Host ID                               Rack
UN  127.0.0.1  237.31 MiB  256          ?       3c8a8d8d-992c-4b7c-a220-6951e37870c6  rack1

cassandra@cqlsh> create KEYSPACE qqq WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 2};
cassandra@cqlsh> use qqq;
cassandra@cqlsh:qqq> CREATE TABLE testrep(id INT PRIMARY KEY);
cassandra@cqlsh:qqq> insert into testrep (id) VALUES ( 1);
cassandra@cqlsh:qqq> CONSISTENCY 
Current consistency level is ONE.
cassandra@cqlsh:qqq> CONSISTENCY TWO ;
Consistency level set to TWO.
cassandra@cqlsh:qqq> insert into testrep (id) VALUES (2);
NoHostAvailable: 
cassandra@cqlsh:qqq> exit