解决 Cassandra Coordinator 节点写入超时的方法

Posted

技术标签:

【中文标题】解决 Cassandra Coordinator 节点写入超时的方法【英文标题】:Approach to resolve Cassandra Coordinator node timeouts on writes 【发布时间】:2019-02-14 13:06:12 【问题描述】:

我有一个简单的单节点 Cassandra 集群,其基本键空间配置为 replication_factor=1

在这个键空间中,我们有大约 230 个表。每个表大约有 40 列。我们对这些表的写入速度大约是每天一次在五分钟内写入 30k 次。我有大约 6 个python worker 脚本,它们一次将这些写入任何一个表,并且它们都将继续进行这些写入,直到当天写入所有 230 个表。脚本使用python cassandra-driver 和一个简单的会话来进行这些写入。至于这里写的数据,很多都是nulls

实际上,如果我是对的,这可以被认为是 6 个并发连接,每天 5 分钟内产生 30k+ 个条目。

我了解 cassandra 如何写入和删除工作,并且熟悉协调节点等。我正在观察间歇性发生的回溯,如下所述:

"cassandra/cluster.py", line 2030, in cassandra.cluster.Session.execute (cassandra/cluster.c:38536)
app_nstablebuilder.1.69j772led82k@swarm-worker-gg37    |   File "cassandra/cluster.py", line 3844, in cassandra.cluster.ResponseFuture.result (cassandra/cluster.c:80834)
app_nstablebuilder.1.69j772led82k@swarm-worker-gg37    | cassandra.WriteTimeout: Error from server: code=1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed out - received only 0 responses." info='consistency': 'ONE', 'required_responses': 1, 'received_responses': 0

我的问题与如何解决这个问题有关。我无法验证问题是出自我的工作人员脚本还是 Cassandra 集群本身。我应该放慢我的工人写作业的速度吗?我应该运行某种诊断来提高 Cassandra 的性能吗?

到目前为止,我阅读的所有解决方案都与多节点集群有关,而我找不到适用于单节点集群的解决方案。

我觉得我们的集群不健康,我的努力应该针对那里的修复。如果是这样,我不确定从哪里开始。谁能指出我正确的方向?

如果我可以提供任何进一步的信息来提供帮助,请告诉我。

【问题讨论】:

如果我理解正确,您的脚本是否插入了空值?如果是这种情况,那么您正在创建墓碑。更好的方法是从查询中排除那些具有空值的列。 @Horia,是的,插入有大量的空值。在查询中不包括这些空列不会导致墓碑,是吗?我将对此进行实验。您认为这有助于解决这个问题吗? 插入空值将创建墓碑。从查询中排除空列不会创建墓碑。您可以阅读一些关于这件事的内容here。我不确定插入空值是否会导致这种情况,但插入空值(会创建墓碑)绝对是一个问题,并且可能有助于解决您所看到的问题。 谢谢!我在过去的几天里就这样做了,这很有帮助。我们现在很少看到写入失败,并且已经通过on_write_timeouts 方法解决了它。非常感谢你:D 很高兴能帮上忙。我还添加了我的评论作为答案。 【参考方案1】:

插入空值将创建墓碑。从查询中排除空列不会创建墓碑。您可以阅读一些关于这件事的内容here。我不确定插入空值是否会导致这种情况,但插入空值(会创建墓碑)绝对是一个需要考虑的改进。

【讨论】:

以上是关于解决 Cassandra Coordinator 节点写入超时的方法的主要内容,如果未能解决你的问题,请参考以下文章

dynamo与cassandra区别

问题记录CDH版Hue提交Oozie Coordinator调度报500异常

问题记录CDH版Hue提交Oozie Coordinator调度报500异常

启动“Distributed Transaction Coordinator”服务 错误1053

kafkaKafka coordinator coordinator 原理剖析

Cassandra - 写入错误。如何解决?