Cassandra CQLSH OperationTimedOut error=客户端请求超时,请参阅会话.execute[_async](超时)

oxf4rvwz  于 2022-09-27  发布在  Cassandra
关注(0)|答案(5)|浏览(414)

我想将数据从一个Cassandra集群(通过192.168.0.200实现)传输到另一个Cashandra集群,通过127.0.0.1实现。数据为523行,但每行约为1MB。我正在使用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

但这并没有帮助。

mtb9vblg

mtb9vblg1#

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

cqlsh --request-timeout=6000

或添加:

[connection]
request_timeout = 6000

~/.cassandra/cqlshrc文件。

rdlzhqv9

rdlzhqv92#

关于复制超时,正确的方法是使用已经指出的PAGETIMEOUT参数。
复制密钥空间。表格设置为'/dev/null',PAGETIMEOUT=10000;
在这种情况下,尝试使用cqlsh设置--request-timeout=6000没有帮助。

yvt65v4c

yvt65v4c3#

现在还不清楚您在这里使用的是哪种版本的Cassandra,所以我假设是3.0.x
COPY函数很好,但并不总是最佳选择(例如,如果您有大量数据),但是对于这一点,您可能需要检查cassandra中的一些超时设置
这里的文档也显示了页面超时设置,这可能会对您有所帮助。
在两个集群之间移动数据可以通过许多其他方式完成。您可以使用以下任一选项:
1.sstableloader
1.其中一个车手喜欢java driver
1.使用spark将数据从一个集群复制到另一个集群,like in this example
1.使用OpsCenter到clone a cluster
1.cassandra bulk loader(我认识很多人使用它)
当然#3和#4需要DSE cassandra,但这只是给你一个想法。我不确定您是在使用Apache Cassandra还是Datastax Enterprise Cassandra。
无论如何,希望这有帮助!

ffx8fchx

ffx8fchx4#

嗨,除了以下内容,

1.检查墓碑

在cassandra逻辑删除中,读取性能降低,并出现以下问题OperationTimedOut:errors={'127.0.0.1':'客户端请求超时。请参阅Session.execute_async'},last_host=127..0.0.1

注解

当我们将数据插入到列中包含空值的表中时,它会创建一个逻辑删除。我们需要避免在表中插入null。
spark中有多个可用选项,如unsethttps://docs.datastax.com/en/latest-csharp-driver-api/html/T_Cassandra_Unset.htm)和ignoreNulls(d2c1c3d)属性。
可以使用以下命令检查表状态
nodetool tablestats密钥空间1.tablename

2.删除墓碑

如果在单个节点上工作,可以通过更改表ALTER table keyspace1.tablename WITHgc_grace_seconds='0'来删除逻辑删除;

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

7xzttuei

7xzttuei5#

如果有人需要增加python Cassandra client中的默认超时:

cas_cluster = Cluster(..)
cas_session = cas_cluster.connect(cas_keyspace)

cas_session.default_timeout = 60 # default is 10 sec.

cas_query_resultset = cas_session.execute("..")

相关问题