【问题标题】:Cassandra DB - No active nodes?Cassandra DB - 没有活动节点?
【发布时间】:2019-07-11 14:57:34
【问题描述】:

我是 Cassandra 的新手,我正在尝试制作一个基本的 Cassandra 服务器,但我遇到了困难。通过一些纯粹的奇迹,我设法创建了一个键空间和一些表。但是,每当我尝试与表交互时,都会收到以下错误:

“无法在 'Localhost' 上执行 CQL 脚本:没有足够的副本可用于一致性查询 ONE(需要 1 个但只有 0 个存活))”

该消息使我相信我没有活动节点,但我有 cassandra.bat(我在 win10 上)在后台运行,这使我能够连接并创建键空间和表。

此外,当我尝试用 nodetool 做任何事情时,它会无限期地处理(或者需要很长时间,我太不耐烦了,但由于我之前的假设,我猜到了前者)。

我的密钥空间是 NetworkTopologyStrategy,具有 1 个复制因子为 3 的数据中心并启用了持久写入。

有人知道怎么了?

【问题讨论】:

    标签: database cassandra


    【解决方案1】:

    首先,您被指定为等于 3 的复制因子,尽管您只有一个节点。其次 - 您需要检查您在 NetworkTopologyStrategy 中指定的数据中心名称 - 如果您执行 nodetool status,您可以找到它。之后使用命令更改现有的键空间:

    ALTER  KEYSPACE keyspace_name 
       WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter_name' : 1};
    

    附:我建议在DataStax Academy 上观看 DS201/210/220 课程 - 这将使您对 Cassandra、基本操作和数据建模有一个很好的了解。

    【讨论】:

    • 感谢您的帮助。不知道他们有一个。然而,在观看视频后,我意识到我犯了一个巨大的错误。我有一个表,其功能只能按某个列排序,我希望能够提取该表的顶部 x 元素。但是,我需要提供一个分区键(我认为),但这将以非常低效的方式对我的整个表进行分区。我所有的列都大相径庭,所以我不知道用什么来划分。如何在 Cassandra 中执行此操作,以获得按单列排序的表?想象一下一桌人,我想按重量对他们进行排序。
    • 基本上——是的,如果你想按不同的列排序,你需要有不同的表。但这确实取决于任务,在许多情况下,物化视图可以帮助自动传播更改。关于分区键 - 应该选择这样的方式,以便在集群中提供或多或少均匀的数据分布 - 不要创建大分区等。但我相信这将在 DS220 课程中涵盖。 DataStax Enterprise (DSE) 还包括 DSE 搜索组件,允许对许多/所有列进行索引,因此您可以在单个表上对它们进行排序
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2017-11-06
    • 2021-05-02
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多