一个新的Cassandra节点(我们称其为c3
)被引入到我们的集群中,并引入了一个已经有另外两个节点(c1
和c2
)的数据中心。节点加入环网后,nodetool repair
在数据中心内执行。
nodetool status
报告说,新节点确实已加入同一数据中心中的群集。
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN xx.xx.xx.c1 48.47 GiB 256 71.0% 5908eee6-63e9-464e-9d65-b20a5f46c86c rack1
UN xx.xx.xx.c2 58.11 GiB 256 64.0% 28691036-3e11-49e9-83d6-9bbe577f7249 rack1
UN xx.xx.xx.c3 37.7 GiB 256 65.0% c8a3e0a3-0dc9-4951-b9c5-ee32dc7a12fd rack1
在引入新节点之前,群集中已经存在一个名为 analytics 的role
。我们的Spark作业使用此角色(通过Datastax Spark-Cassandra Connector)将数据写入Cassandra集群。
添加新节点后,我在日志中观察到以下两个异常:
java.io.IOException: Failed to write statements to reports.ts_table. The latest exception was User analytics has no MODIFY permission on <table reports.ts_table> or any of its parents.
Please check the executor logs for more exceptions and information at com.datastax.spark.connector.writer.TableWriter$$anonfun$writeInternal$1$$anonfun$apply$3.apply(TableWriter.scala:243) ...
Cluster: Authentication error during reconnection to /xx.xx.xx.c3:9042, scheduling retry in 16000 milliseconds.
com.datastax.driver.core.exceptions.AuthenticationException: Authentication error on host /xx.xx.xx.c3:9042: Username and/or password are incorrect
这些异常似乎仅在写入新添加的c3
节点时才会发生。
仅对system_auth
模式进行多次修复,以及对数据中心进行全面修复似乎无法解决此问题。数据中心的system_auth
模式的复制因子为2。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
在您的情况下,将新节点加入后,将system_auth的RF增加到3是很好的。
以下内容也是如此
- 将DC的ALTER system_auth密钥RF设置为3
- 运行修复-full system_auth