4

当我遇到以下问题时,我试图为 cassandra 设置用户身份验证。

首先,我更新了cassandra.yaml

authenticator: PasswordAuthenticator

然后创建了具有 3 复制因子的 system_auth 键空间:

CREATE KEYSPACE system_auth WITH REPLICATION =  { 'class' : 'SimpleStrategy', 'replication_factor' : 3};

然后使用以下命令重新运行 cassandra:

bin/cassandra

然后,我继续并确保修复我的节点(尽管我不确定我是否理解为什么这很重要/必要):

nodetool repair

即使在完成所有这些步骤之后,cassandra/java 也会对我大喊:

    Traceback (most recent call last):
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/cqlsh", line 2044, in <module>
    main(*read_options(sys.argv[1:], os.environ))
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/cqlsh", line 2030, in main
    display_float_precision=options.float_precision)
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/cqlsh", line 480, in __init__
    cql_version=cqlver, transport=transport)
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/connection.py", line 143, in connect
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/connection.py", line 59, in __init__
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/thrifteries.py", line 157, in establish_connection
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/cassandra/Cassandra.py", line 465, in login
  File "/home/tscobb/Documents/BM/apache-cassandra-2.0.5/bin/../lib/cql-internal-only-1.4.1.zip/cql-1.4.1/cql/cassandra/Cassandra.py", line 486, in recv_login
cql.cassandra.ttypes.AuthenticationException: AuthenticationException(why='org.apache.cassandra.exceptions.UnavailableException: Cannot achieve consistency level QUORUM')

老实说,在这一点上,我不知道如何进行。如果有人有任何想法,将不胜感激。

我在 Ubuntu vm 中运行 cassandra 2.0.5。不确定这是否有帮助。

另外,当我运行时:

nodetool status

出现以下情况:

nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address Load    Tokens  Owns   Host ID                              Rack
UN  127.0.0.1  1.57 MB  256     100.0%  37ae1d4c-0df5-43d2-9593-4603ac68c34a  rack1
4

1 回答 1

8
'class' : 'SimpleStrategy', 'replication_factor' : 3

由于您的集群中只有一个节点,因此将复制因子设置为 3 将是您的问题。这是一篇描述 Cassandra 中的复制的文章。你应该快速通读一遍。有一部分在这里特别适用:

当复制因子超过节点数时,写入被拒绝,但只要可以满足所需的一致性级别,就会提供读取。

Cannot achieve consistency level QUORUM

Cassandra 将“Quorum”计算为 (replication_factor / 2) + 1。因此,如果复制因子为 3,则需要运行 2 个节点才能满足一致性级别。

基本上,将复制因子设置回 1,就可以了。

于 2014-03-06T15:46:19.140 回答