我想将数据从一个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
但这没有帮助。
谢谢你的帮助
目前尚不清楚你在这里使用哪个版本的Cassandra所以我将假设3.0.x
该 COPY
功能很好,但并不总是最好的选择(即,如果你有很多数据),但是对于这个,你可能想检查你的一些 超时设置 在cassandra
这里的文档显示了一个 将PageTimeout 设置也可以帮助你。
在两个集群之间移动数据可以通过许多其他方式完成。您可以使用以下任何一项:
- 该 sstableloader
- 其中一个司机喜欢 java驱动程序
- 使用spark将数据从一个集群复制到另一个集群, 就像在这个例子中
- 使用OpsCenter 克隆一个集群
- 该 cassandra散货装载机 (我认识很多人使用这个)
当然#3和#4需要DSE cassandra,但它只是为了给你一个想法。我不确定您是使用Apache Cassandra还是Datastax Enterprise Cassandra。
无论如何,希望这有帮助!
您可能希望增加请求超时(默认值:10秒),而不是连接超时。
尝试:
cqlsh --request-timeout=6000
或添加:
[connection]
request_timeout = 6000
到你的 ~/.cassandra/cqlshrc
文件。
关于复制超时,正确的方法是使用已指向的PAGETIMEOUT参数。
使用PAGETIMEOUT = 10000将keypace.table复制到'/ dev / null';
尝试使用cqlsh设置--request-timeout = 6000在这种情况下无济于事。
嗨除了以下,
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文件中的值以增加读取请求的超时