Apache Spark 和 Cassandra:具有一致性级别 QUORUM 的超级用户权限出现 UnauthorizedException

问题描述 投票:0回答:1

我正在使用 Apache Spark 将数据写入 Cassandra 集群。该部署基于 kubernetes,并使用 cassandra helm Chart。我偶尔会遇到导致工作流产的

SparkException
,详情如下:

...
Caused by: com.datastax.oss.driver.api.core.servererrors.UnauthorizedException: Unable to perform
authorization of permissions: Unable to perform authorization of super-user permission: Cannot
achieve consistency level QUORUM

有关 Cassandra 集群的其他详细信息:

数据中心:数据中心1

Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens  Owns (effective)  Host ID                               Rack
UN  10.x.x.x  10.98 GiB  256     64.7%             blahblah-c2e0509a03                        rack1
UN  10.x.x.x  12.17 GiB  256     69.7%             blahblah-a617-4dfbcdb999aa                 rack1
UN  10.x.x.x  12.6 GiB   256     65.6%             blahblah-9d4f-9111f4ae55a3                 rack1

我已经确保 system_auth 键空间被复制到所有这些节点。然而,该问题仍然间歇性地出现。如果您能深入了解为什么会发生这种情况以及如何解决它,我将不胜感激。

apache-spark cassandra spark-cassandra-connector
1个回答
0
投票

这是使用内置管理员角色时的一个众所周知的问题 - 对于此角色,Cassandra 在读取身份验证数据时始终使用

QUORUM
,并且可能会出现只有一个节点可用而其他节点正在执行垃圾收集或其他活动的情况并且不承担任何责任。

您可以创建 另一个用户并为其授予必要的权限(包括填充管理员权限) - 对于此用户,将使用

ONE
而不是
QUORUM

CREATE ROLE dba WITH SUPERUSER = true AND LOGIN = true AND PASSWORD = 'password';

附注甚至建议禁用内置超级用户,请参阅链接文档了解详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.