【问题标题】:Error during inserting data: NoHostAvailable:插入数据时出错:NoHostAvailable:
【发布时间】:2017-02-15 17:14:38
【问题描述】:

我尝试学习 Apache Cassandra 的基础知识。我在https://docs.datastax.com/en/cql/3.1/cql/ddl/ddl_music_service_c.html找到了这个简单的应用示例

所以我创建了一个键空间,然后我创建了一个表,现在我正在尝试将一些数据添加到数据库中。

但是当我尝试插入数据时出现错误:“NoHostAvailable:”就是这样。没有更多信息。

到目前为止,我已尝试更新 python 驱动程序 (NoHostAvailable exception connecting to Cassandra from python),但没有成功。

我做错了什么?还是cqlsh的问题?

【问题讨论】:

  • 您是否在防火墙中打开了所需的端口?
  • @JimWright 我认为没有防火墙...我有一个虚拟机。我在这台机器上运行 cqlsh。我什至通过 cqlsh 创建了一个表。我无法在此表中读取或写入数据。

标签: cassandra cqlsh


【解决方案1】:

好的。我找到了答案。 NetworkTopologyStrategy 不适合在单个节点上运行。在 SimpleStrategy 上更改复制策略后,一切都开始工作了。

【讨论】:

    【解决方案2】:

    刚刚遇到同样的问题。检查 keyspace 的复制设置,如果使用 NetworkTopologyStrategy,请确保 dc 名称正确。

    【讨论】:

      【解决方案3】:

      要将复制策略(从 NetworkTopologyStrategy)更改为 SimpleStrategy(适用于单节点),请运行以下查询:

      ALTER KEYSPACE yourkeyspaceName WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'} ;
      

      【讨论】:

        【解决方案4】:

        对我来说,这发生在其中一个实例发生故障时。重新启动第二个实例,错误消失了。但是在模式表中,我看到拓扑对于我的键空间来说很简单。这令人困惑。

        【讨论】:

          【解决方案5】:

          让我们在这里清除空气......

          您绝对 可以在单节点配置中使用NetworkTopologyStrategy。我目前在本地安装了五个版本的 Cassandra,它们都是这样配置的,而且它们工作得很好。

          虽然,它并不像仅仅使用SimpleStrategy那么简单,所以需要采取一些步骤:

          首先在cassandra.yaml 中设置GossipingPropertyFileSnitch:

          endpoint_snitch: GossipingPropertyFileSnitch
          

          这告诉 Cassandra 使用 cassandra-rackdc.properties 文件来命名逻辑数据中心和机架:

          $ cat conf/cassandra-rackdc.properties | grep -v "#"
          
          dc=dc1
          rack=rack1
          

          如果您有一个新集群,您可以更改它们。如果您有现有的集群,最好保留它们。但是您需要引用 dc 名称,因为您需要在键空间定义中使用它。

          现在,如果你这样定义你的键空间:

          CREATE KEYSPACE stackoverflow WITH replication = {'class': 'NetworkTopologyStrategy', 'dc1': '1'};
          

          有了这个配置,NetworkTopologyStrategy就可以正常使用了。

          对此意见会有所不同,但我不建议使用SimpleStrategy。练习习惯在本地使用NetworkTopologyStrategy 是个好主意。我这样说是因为我看到了相反的情况:人们在生产中不小心将SimpleStrategy 密钥空间部署到 MDHA 集群中,然后想知道为什么无法满足他们配置的应用程序一致性。

          【讨论】:

            【解决方案6】:

            有时会发生这种情况,当节点关闭时,该节点具有该插入所需的分区范围。请从以下命令检查您的所有节点并尝试再次运行查询。

            节点工具状态

            nodetool 描述集群。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-01-08
              • 2016-05-23
              • 2016-08-23
              • 1970-01-01
              • 2020-08-10
              • 2016-06-16
              • 1970-01-01
              相关资源
              最近更新 更多