加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows-7 – HUnavailableException:可能没有足够的副本来处理

发布时间:2020-12-14 05:42:11 所属栏目:Windows 来源:网络整理
导读:我在我的机器上使用Cassandra 1.2.4( Windows 7). 我的DC1中有3个节点,在我的机器上.我只使用一台DC(我的机器).我确实保留了复制因子= 2和“HConsistencyLevel.ONE”.但是,当其中一个节点关闭,并且我尝试读取或写入DB时,我收到错误 – “可能没有足够的副本
我在我的机器上使用Cassandra 1.2.4( Windows 7).

我的DC1中有3个节点,在我的机器上.我只使用一台DC(我的机器).我确实保留了复制因子= 2和“HConsistencyLevel.ONE”.但是,当其中一个节点关闭,并且我尝试读取或写入DB时,我收到错误 – “可能没有足够的副本来处理一致性级别.”.
我的印象是,当我们将一致性级别保持为“ONE”时,即使一个节点启动,写入/读取也应该没有错误.但是我得到了这个错误.有人可以纠正我,因为我在这里做错了.我在谷歌搜索但是没有得到很多关于此错误的帮助,尽管此错误非常相关.我希望在节点发生故障时进行读/写操作.以下是我的代码.

String keySpaceName="kspace";
String clusterName="Test Cluster";
String columFamilyName="ktable";
String host="127.0.0.1:9160,127.0.0.2:9161,127.0.0.3:9162";
int replicationFactor=2;

CassandraHostConfigurator cassandraHostConfigurator = new   
CassandraHostConfigurator(host);
Cluster cluster = HFactory.getOrCreateCluster(clusterName,cassandraHostConfigurator);
KeyspaceDefinition keyspaceDef = cluster.describeKeyspace(keySpaceName);

ConfigurableConsistencyLevel configurableConsistencyLevel = new 
ConfigurableConsistencyLevel();
Map<String,HConsistencyLevel> clmap = new HashMap<String,HConsistencyLevel>();

// Define CL.ONE for ColumnFamily "ktable"
clmap.put(columFamilyName,HConsistencyLevel.ONE);
configurableConsistencyLevel.setReadCfConsistencyLevels(clmap);
configurableConsistencyLevel.setWriteCfConsistencyLevels(clmap);

if(keyspaceDef==null)   
{
KeyspaceDefinition newKeyspace = HFactory.createKeyspaceDefinition(
keySpaceName,ThriftKsDef.DEF_STRATEGY_CLASS,replicationFactor,null);
cluster.addKeyspace(newKeyspace,true);
}
Keyspace keyspace = HFactory.createKeyspace(keySpaceName,cluster,configurableConsistencyLevel);

StringSerializer ss = StringSerializer.get();
ColumnFamilyTemplate<String,String> cft = new ThriftColumnFamilyTemplate<String,String>(keyspace,columFamilyName,ss,ss);
ColumnFamilyUpdater<String,String> updater = cft.createUpdater("xkey");
UUID uid = new UUID();
updater.setValue("id",Long.toString(uid.getClockSeqAndNode()),ss);
updater.setValue("name","Catherine",ss);
updater.setValue("state","GA",ss);
cft.update(updater);

解决方法

将复制因子更改为1,即您已设置的节点数.我确实得到了相同的错误来运用这些例子.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读