Cassandra:rpc_在集群中插入新表时超时

Cassandra:rpc_在集群中插入新表时超时,cassandra,cql3,cqlsh,Cassandra,Cql3,Cqlsh,我正在使用Cassandra 2.0.3,通过加载一个文件(source命令),通过cqlsh删除并重新创建一个简单的表。在同一个文件中,我在新创建的表中插入了一些行 大约每3-4次尝试,我就会在一些插入上获得rpc_超时。 在这种情况下,我总是在集群的一个节点上出现以下异常: WARN [Thread-63] 2014-05-07 10:52:39,658 IncomingTcpConnection.java (line 83) UnknownColumnFamilyException re

我正在使用Cassandra 2.0.3,通过加载一个文件(source命令),通过cqlsh删除并重新创建一个简单的表。在同一个文件中,我在新创建的表中插入了一些行

大约每3-4次尝试,我就会在一些插入上获得rpc_超时。 在这种情况下,我总是在集群的一个节点上出现以下异常:

 WARN [Thread-63] 2014-05-07 10:52:39,658 IncomingTcpConnection.java (line 83) UnknownColumnFamilyException reading from socket; closing
org.apache.cassandra.db.UnknownColumnFamilyException: Couldn't find cfId=15a8520e-bb08-3a79-82a0-f735287315bf
    at org.apache.cassandra.db.ColumnFamilySerializer.deserializeCfId(ColumnFamilySerializer.java:178)
    at org.apache.cassandra.db.ColumnFamilySerializer.deserialize(ColumnFamilySerializer.java:103)
    at org.apache.cassandra.db.RowMutation$RowMutationSerializer.deserializeOneCf(RowMutation.java:304)
    at org.apache.cassandra.db.RowMutation$RowMutationSerializer.deserialize(RowMutation.java:284)
    at org.apache.cassandra.db.RowMutation$RowMutationSerializer.deserialize(RowMutation.java:312)
    at org.apache.cassandra.db.RowMutation$RowMutationSerializer.deserialize(RowMutation.java:254)
    at org.apache.cassandra.net.MessageIn.read(MessageIn.java:99)
    at org.apache.cassandra.net.IncomingTcpConnection.receiveMessage(IncomingTcpConnection.java:153)
    at org.apache.cassandra.net.IncomingTcpConnection.handleModernVersion(IncomingTcpConnection.java:130)
    at org.apache.cassandra.net.IncomingTcpConnection.run(IncomingTcpConnection.java:74)
即使我在cqlsh中直接插入,它也会因rpc_超时而失败。通常大约一分钟后,插入成功

我的节点是时间同步的(我在我的PC上使用3个虚拟机),局域网当然在本地运行的所有虚拟机上都是超高速的

我通过向运行在单个节点上的现有Cassandra添加2个节点来创建集群。 我的密钥空间未使用复制:

CREATE KEYSPACE eras
  WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
以下是我用来重现问题的文件的内容:

DROP TABLE IF EXISTS erasconfig;

CREATE TABLE erasconfig (
  name text,
  category text,
  description text,
  ismodifiablebyuser int,
  value text,
  format text,
  PRIMARY KEY (name, category)
);

INSERT INTO ErasConfig (isModifiableByUser, format, name, value, category, description) VALUES (1, '', 'RECORD_IN_BASE', 'garbage', 'Path', 'Absolute path used for RECORD INPUT files');

此插入进入集群的第3个节点,该节点在创建表期间有时会失败,但上述情况除外。

问题在于架构复制与创建完成是异步的。因此,在多节点集群中,您需要验证模式更改是否已传播到所有节点,然后再尝试使用它们。
nodetool descripebCluster
可用于检查模式是否一致。从客户端,您可以检查system.peers表,以验证所有架构版本都已更新。

升级到2.0.7版后刚刚尝试,我也遇到了同样的问题。谢谢您的命令!你认为我应该为此提出卡桑德拉项目的问题吗?