【问题标题】:NoHostAvailable error in cqlsh consolecqlsh 控制台中的 NoHostAvailable 错误
【发布时间】:2017-06-12 06:20:09
【问题描述】:

我后来能够摆脱这个错误,但我不确定我所做的是否正确。 1)

CREATE KEYSPACE myKeySpace WITH replication = 
  {'class': 'NetworkTopologyStrategy', 'dc1': '1', 'dc2': '2'}
  AND durable_writes = true;

在此之后执行创建表并选择表。这会在控制台中引发“NoHostAvailable:”错误。

2 ) 如果我将创建语句更改为以下语句,则选择查询有效。

CREATE KEYSPACE myKeySpace WITH replication = 
  {'class': 'NetworkTopologyStrategy', 'datacenter1': '1', 'dc2': '2'}
  AND durable_writes = true; 

如果我有一个默认的 datacenter1,它可以工作。我无法理解为什么它只在我提供 datacenter1 时才有效。请帮忙。

【问题讨论】:

    标签: cassandra cqlsh


    【解决方案1】:

    当您执行nodetool status 时,您会看到哪些数据中心?

    您指定为密钥空间的复制因子 (RF) 的数据中心必须在您的 cassandra-rackdc.properties 或 cassandra-topology.properties 文件中预定义(取决于您配置的 Snitch)。 p>

    【讨论】:

    • 我在创建它时没有指定任何数据中心,所以它可以使用默认值。感谢您的帮助,我能够弄清楚我现在需要做什么:)
    • 此问题与最新的 cassandra 构建和较旧的创建脚本有关
    【解决方案2】:

    当我尝试使用复制策略为 NetworkTopologyStrategy 访问在键空间中创建的表时遇到了同样的问题。

    后来我发现的原因是因为我在本地使用它,所以副本不可用。

    如果我将 keyspace 复制策略更改为 SimpleStrategy 并将 replication_factor 更改为 1,错误就消失了。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      您只能指定 cassandra 集群中存在/配置的数据中心。

      运行 nodetool status,它会为您提供集群详细信息,例如数据中心名称、机架名称等。

      在使用 NetworkTopologyStrategy 类复制创建键空间时使用此处的数据中心名称。

      【讨论】:

        【解决方案4】:

        第一步,你可以试试:

        'class':'SimpleStrategy'

        要查看您的代码,请排除策略类!

        之后,如果你没有发现任何错误,你就在策略课上工作。

        【讨论】:

          【解决方案5】:

          您应该首先根据您必须使用的定义的数据中心名称检查属性文件“cassandra-rackdc.properties”(使用此属性文件的Cassandra的最新版本)或“cassandra-topology.properties”中定义的数据中心名称创建密钥空间时该数据中心名称。你可以在创建 keyspace 之前检查 nodetool 的状态,你可以在其中看到默认的数据中心名称。

          【讨论】:

            猜你喜欢
            • 2020-01-13
            • 2021-09-14
            • 2021-01-27
            • 2020-02-18
            • 1970-01-01
            • 2019-08-05
            • 2016-05-14
            • 1970-01-01
            相关资源
            最近更新 更多