cassandra - 运行选择查询时出现 Cassandra 集群错误
问题描述
我创建了一个具有 3 个节点的 cassandra 集群,以下是 cassandra.yaml 文件的配置。
Node 1:
cluster_name: 'My Cluster'
num_tokens: 256
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
- seeds: 10.0.0.1, 10.0.0.2
listen_address: 10.0.0.1
native_transport_address: 10.0.0.1
native_transport_broadcast_address:1.2.3.4
endpoint_snitch: GossipingPropertyFileSnitch
Node 2:
cluster_name: 'My Cluster'
num_tokens: 256
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
- seeds: 10.0.0.1, 10.0.0.2
listen_address: 10.0.0.2
native_transport_address: 10.0.0.2
native_transport_broadcast_address:1.2.3.4
endpoint_snitch: GossipingPropertyFileSnitch
Node 3:
cluster_name: 'My Cluster'
num_tokens: 256
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
- seeds: 10.0.0.1, 10.0.0.2
listen_address: 10.0.0.3
native_transport_address: 10.0.0.3
native_transport_broadcast_address:1.2.3.4
endpoint_snitch: GossipingPropertyFileSnitch
还将所有节点的 cassandra-rackdc.properties 文件更改为
Node1:
dc=dc1
rack=rack1
Node2:
dc=dc1
rack=rack1
Node3:
dc=dc1
rack=rack2
我启动了 dse 服务,我的三个节点都已启动,并且所有 3 个节点的状态都显示为“UN”。
现在我正在尝试创建键空间和表。在创建键空间时,我正在使用以下命令。
CREATE KEYSPACE IF NOT EXISTS IntelliDish WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'dc1': '1'} AND DURABLE_WRITES = false;
在这样做时,我收到了这个警告:
Warning: schema version mismatch detected; check the schema versions of your nodes in system.local and system.peers.
然后我创建了表格并得到了同样的警告。当我运行 select * from my_table 时,会出现以下错误。
ReadFailure: Error from server: code=1300 [Replica(s) failed to execute read] message="Operation failed - received 0 responses and 1 failures (UNKNOWN_TABLE=[/10.0.0.3])" info={'failures': 1, 'received_responses': 0, 'error_code_map': {'10.0.0.3': '0x0005'}, 'required_responses': 1, 'consistency': 'ONE'}.
我错误地观察到它显示了我的第三个节点的IP。我不确定这里发生了什么。
输出nodetool describecluster
:
Cluster Information:
Name: Intellidish
Snitch: org.apache.cassandra.locator.GossipingPropertyFileSnitch
DynamicEndPointSnitch: enabled
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
Schema versions: 407c57b2-94c9-33ed-80e2-b619ca5bfca1: [172.31.6.202, 172.31.7.89]
809561be-284f-3129-99ba-94fee6a364c6: [172.31.0.138]
解决方案
基本上,存在模式分歧。当网络出现问题或曾经出现问题时,可能会发生这种情况。模式的存储方式与任何其他表中的数据一样,只是它需要在所有节点之间保持一致。当添加/编辑键空间或表时,无法访问一个节点,就会发生这种情况。
解决这个问题的方法是在受影响的节点上反弹 Cassandra。如果架构版本仍然不匹配,则尝试滚动反弹所有节点。如果这不起作用,则停用坏节点,擦除它,然后将其重新添加到集群中。
推荐阅读
- bash - 删除目录中的文件并忽略如果为空-BASH
- php - Laravel 文件存储 URL 在本地工作,但在真实服务器上是 404
- javascript - 单击时捕获隐藏在 Leaflet 弹出窗口中的 ID 需要单击两次才能更新 [Javascript]
- centos7 - 对一系列不带“.”的文件/目录进行焦油处理 作为父目录?
- sprite-kit - 给予敌人生命/多重打击
- python - 带部分字符串的 Unpivot Dataframe
- php - 怎么把文字放在照片下面
- tfs - 无法在具有项目集合管理员角色的团队项目上管理 TFS 2018 中的安全性
- python - 我有这个关于模糊签名验证的数据集,但我不知道如何加载数据集
- java - JPG 处理器 Java 代码引发空指针异常