无法使用最新的 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 目录不可写而无法启动