问题 Cassandra CQLSH OperationTimedOut错误=客户端请求超时。请参见Session.execute [_async](超时)


我想将数据从一个cassandra集群(通过192.168.0.200到达)传输到另一个cassandra集群(通过127.0.0.1到达)。数据为523行,但每行约为1 MB。我正在使用COPY FROM和COPY TO命令。发出COPY TO命令时出现以下错误:

Error for (8948428671687021382, 9075041744804640605):
OperationTimedOut - errors={
'192.168.0.200': 'Client request timeout. See Session.execute[_async](timeout)'},
last_host=192.168.0.200 (will try again later attempt 1 of 5).

我已经厌倦了改变 ~/.cassandra/cqlshrc 档案:

[connection]
client_timeout = 5000

但这没有帮助。 谢谢你的帮助


8546
2017-10-10 10:11


起源



答案:


目前尚不清楚你在这里使用哪个版本的Cassandra所以我将假设3.0.x

COPY 功能很好,但并不总是最好的选择(即,如果你有很多数据),但是对于这个,你可能想检查你的一些 超时设置 在cassandra

这里的文档显示了一个 将PageTimeout 设置也可以帮助你。

在两个集群之间移动数据可以通过许多其他方式完成。您可以使用以下任何一项:

  1. sstableloader
  2. 其中一个司机喜欢 java驱动程序
  3. 使用spark将数据从一个集群复制到另一个集群, 就像在这个例子中
  4. 使用OpsCenter 克隆一个集群
  5. cassandra散货装载机 (我认识很多人使用这个)

当然#3和#4需要DSE cassandra,但它只是为了给你一个想法。我不确定您是使用Apache Cassandra还是Datastax Enterprise Cassandra。

无论如何,希望这有帮助!


1
2018-06-14 09:45





您可能希望增加请求超时(默认值:10秒),而不是连接超时。

尝试:

cqlsh --request-timeout=6000

或添加:

[connection]
request_timeout = 6000

到你的 ~/.cassandra/cqlshrc 文件。


7
2017-11-16 22:25





关于复制超时,正确的方法是使用已指向的PAGETIMEOUT参数。

使用PAGETIMEOUT = 10000将keypace.table复制到'/ dev / null';

尝试使用cqlsh设置--request-timeout = 6000在这种情况下无济于事。


2
2018-06-05 09:20





嗨除了以下,

1.检查墓碑
在cassandra中,逻辑删除降低了读取的性能并发生以下问题:OperationTimedOut:errors = {'127.0.0.1':'客户端请求超时。请参阅Session.execute_async'},last_host = 127.0.0.1
注意
当我们在列中使用空值插入数据时,它会创建一个逻辑删除。我们需要避免在表中插入null。
有多种选择可供选择 未设置https://docs.datastax.com/en/latest-csharp-driver-api/html/T_Cassandra_Unset.htm)和 ignoreNulls (https://github.com/datastax/spark-cassandra-connector/blob/master/doc/5_saving.md)火花中的财产。
您可以使用以下命令检查表状态
nodetool tablestats keyspace1.tablename

2.删除墓碑
如果您在单个节点上工作,则可以通过更改表来删除逻辑删除 ALTER表keyspace1.tablename WITH gc_grace_seconds='0';

3.read_request_timeout_in_ms:配置cassandra.yaml文件中的值以增加读取请求的超时


1
2018-06-18 07:22