Java 使用身份验证扩展Cassandra群集的正确方法

Java 使用身份验证扩展Cassandra群集的正确方法,java,cassandra,datastax,cassandra-2.0,Java,Cassandra,Datastax,Cassandra 2.0,启动并向配置为使用身份验证的Cassandra群集添加新节点后,我将获得以下堆栈跟踪: java.lang.RuntimeException: org.apache.cassandra.exceptions.AlreadyExistsException: Cannot add already existing column family "credentials" to keyspace "system_auth" at org.apache.cassandra.cql3.QueryPr

启动并向配置为使用身份验证的Cassandra群集添加新节点后,我将获得以下堆栈跟踪:

java.lang.RuntimeException: org.apache.cassandra.exceptions.AlreadyExistsException: Cannot add already existing column family "credentials" to keyspace "system_auth"
    at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:242)
    at org.apache.cassandra.auth.PasswordAuthenticator.process(PasswordAuthenticator.java:266)
    at org.apache.cassandra.auth.PasswordAuthenticator.setupCredentialsTable(PasswordAuthenticator.java:214)
    at org.apache.cassandra.auth.PasswordAuthenticator.setup(PasswordAuthenticator.java:171)
    at org.apache.cassandra.auth.Auth.setup(Auth.java:132)
    at org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:830)
    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:583)
    at org.apache.cassandra.service.StorageService.initServer(StorageService.java:482)
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:345)
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:462)
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:552)
Caused by: org.apache.cassandra.exceptions.AlreadyExistsException: Cannot add already existing column family "credentials" to keyspace "system_auth"
        at org.apache.cassandra.service.MigrationManager.announceNewColumnFamily(MigrationManager.java:209)
        at org.apache.cassandra.cql3.statements.CreateTableStatement.announceMigration(CreateTableStatement.java:114)
        at org.apache.cassandra.cql3.statements.SchemaAlteringStatement.execute(SchemaAlteringStatement.java:71)
        at org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:188)
        at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:222)
        at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:234)
        ... 10 more
这是有意义的,因为前面的一个节点已经创建了它


考虑到
system\u auth
列族已经存在,使新节点联机的正确方法是什么?此外,随着集群规模的增加,如何增加
system\u auth
表的复制系数?

虽然我还没有找到关于该错误的任何具体信息,但正如您正确指出的,它可能是一个警告,它应该已经存在。我假设该节点已启动并加入集群

回答您的问题:

鉴于system_auth列族已经存在,使新节点联机的正确方法是什么

此外,随着集群规模的增加,如何满足增加system_auth表的复制因子的需要

我无法在这个答案上发布多个链接,但是搜索Datastax文档以添加节点将为您提供添加节点的一般过程,无论是否使用身份验证,该过程都是相同的,唯一的区别是cassandra.yaml中的身份验证设置

以下文档介绍了使用复制配置system_auth keyspace:


此问题被标记为
cassandra-2.0
,因此,如果您查看列族,在尝试创建列族之前,它似乎在检查列族是否丢失(元数据==null)。您可能需要从Cassandra用户列表中寻求支持。