无法使用最新的 datastax python 驱动程序扩展 cassandra

Posted

技术标签:

【中文标题】无法使用最新的 datastax python 驱动程序扩展 cassandra【英文标题】:Unable scale up cassandra using latest datastax python driver 【发布时间】:2015-10-27 19:07:11 【问题描述】:

我们正在使用多个 cassandra datastax 集群实例 (6) 使用 python 连接到 cassandra。我们正在汇集这些多个连接来做一些操作。每个操作都独立于其他操作。

它在少量操作上运行良好,但是一旦我尝试扩大规模,我就会收到以下错误:

NoHostAvailable: ('Unable to complete the operation against any hosts', <Host: 127.ption('Pool is shutdown',))

有时还会出现以下警告:

WARNING  Heartbeat failed for connection (140414695068880) to 127.0.0.1

我尝试更改一些集群对象参数,但没有帮助。

以下是我正在使用的 cassandra 中键空间的配置:

'class': 'SimpleStrategy', “复制因子”:“1”

我正在为 python 使用最新版本的 cassandra 和 datastax 驱动程序。只有一个节点是cassandra。

编辑:更多细节:

多个集群实例位于不同的进程中(进程是使用 Python 多处理模块创建的) - 每个进程一个集群实例。让我们将这些过程称为 Cassandra-Processes (CP)。还有很多其他进程会进行一些计算,并且需要偶尔查找 Cassandra DB 并对其进行写入。目前的设计是这些进程中的每一个都映射到一个CP上,所有进程要完成的DB读/写都是通过这个映射的CP来完成的。将要读取/写入的“内容”被传递到映射的 CP 读取的队列(再次来自多处理库)中。

我们观察到这个设置运行了很长一段时间 - 然后突然 Cassandra 开始出错。

【问题讨论】:

您提供了一些信息,以便我们能够为您提供帮助。做一个简单的谷歌搜索会发现有很多不同的方法可以使用 Casandra 获得这种行为。该标题还有一个已注册的错误。 更新了问题。谢谢。 Cassandra 版本?驱动版本?服务器日志中是否有任何错误?驱动程序调试日志中是否有更多线索? 【参考方案1】:

如果不了解您的特定拓扑、设置和系统配置,就很难进行远程诊断。然而,这看起来很像配置问题,甚至是 python 驱动程序。如果你用谷歌搜索你的错误信息,你会在 Datastax 的 Jira 上找到多个描述这个或类似问题的主题,我会检查 Python 驱动程序是否是最新的。 首先有什么帮助是详细了解您尝试做什么,您的集群是如何配置的。

【讨论】:

【参考方案2】:

目前尚不清楚为什么要针对单个 Cassandra 节点使用六个集群实例。通常,您应该为每个应用程序(每个远程集群)使用一个集群实例。您可以阅读有关 Cassandra 驱动程序的一般设计注意事项here

如果您希望在吞吐量方面“扩展”,您可以考虑使用多处理。我在博文here 中讨论了这个问题。


后续:

从我们目前掌握的信息中可以推断出两件事:

    应用程序推送的并发请求数超过了您的连接池配置处理的数量。我这样说是因为“池已关闭”仅在请求等待连接/流可用时发生。您可以使用cluster settings 调整连接池以使更多可用。但是,如果您的“集群”(服务器节点)不堪重负,您将不会获得太多收益。 您的连接正在关闭。此异常仅在节点突然标记为 down 时发生。在单节点设置中,这很可能是因为连接错误。在服务器日志或驱动程序调试日志中寻找线索(如果您正在捕获)。

我们可能需要更多地了解您的执行模型才能提供更多帮助。您是否可以运行不受限制的异步请求而不偶尔等待它们完成?

【讨论】:

感谢您的回复和内容丰富的帖子!在帖子的示例中,您似乎也在创建多个集群实例,池中的每个进程一个。它与 OP 所做的有什么不同?或者你是说只有多个节点才有意义? 是的,该帖子显示每个进程一个集群实例(也解释了原因)。我没有从 OP 那里得知这种情况涉及多处理。正如其他人所提到的,这里没有足够的细节。我希望这些示例能够指向正确的方向,而无需我们进一步发现。 我知道 OP 和项目 :) - 我会请他添加更多细节。

以上是关于无法使用最新的 datastax python 驱动程序扩展 cassandra的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Python 应用程序连接到 DataStax Enterprise 集群

无法使用 cassandra datastax 生成 solr 架构

Datastax Java 驱动程序 4.6.1 无法使用 application.conf 覆盖配置

Docker 上的 DataStax Enterprise:由于 /hadoop/conf 目录不可写而无法启动

无法使用 datastax java 驱动程序通过 UDT 键从 cassandra 检索

无法从 Datastax Astra DB 获取所有行