【问题标题】:Cassandra issuing an error while selecting the data in table "NoHostAvailable:"Cassandra 在选择表“NoHostAvailable:”中的数据时发出错误
【发布时间】:2018-01-08 00:44:55
【问题描述】:

我已经创建了键空间,还使用 ​​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

架构

键空间

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

表格

CREATE TABLE testrep(id INT PRIMARY KEY);

【问题讨论】:

  • 如果您的应用程序无法连接到正确数量的节点以满足所需的一致性级别,这是一个常见错误。不过,您需要在问题中添加更多信息才能获得更有针对性的答案。添加nodetool status 输出以显示拓扑。显示您的 CQL 命令并显示您正在使用的一致性级别。
  • 这是我的 nodetool 状态 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 机架 1 DN 172.30.1.2 ? 256 ? 2b1f15d1-2f92-41ef-a03e-0e5f5f578cf4 rack1 而且我正在使用带有 2 个副本的 SimpleStrategy。 CREATE KEYSPACE test WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 2};我正在使用以下命令创建表。CREATE TABLE testrep(id INT PRIMARY KEY);在插入数据时遇到问题.

标签: cassandra cassandra-3.0


【解决方案1】:

请注意,从 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

【讨论】:

  • cqlsh:hptest> CONSISTENCY 当前一致性级别为 ONE。 cqlsh:hptest> 我已经检查了每个节点中的 Cassandra 状态。它显示每个节点都在本地主机中。但是,其他节点处于 Down 状态。请帮助我如何配置两个实现复制和我遇到的问题(NoHostAvailable)。
猜你喜欢
  • 2020-01-13
  • 2021-01-27
  • 2017-02-15
  • 2020-02-18
  • 2016-06-14
  • 2014-01-09
  • 2019-06-18
  • 2012-12-28
  • 1970-01-01
相关资源
最近更新 更多