在使用CassandraSinkConnector在ConsistencyLevel.LOCAL_QUORUM上给卡桑德拉写信时,我正面对着WriteTimeOutException。
我正在使用Cassandra 3.3.0版本
所以我需要帮助--如何处理和修复这个异常?
堆栈-跟踪:-
由于无法恢复的exception.org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:546) org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:302)org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:205)org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:173)org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:170)org.apache.kafka.connect.runtime.WorkerTask.run(而造成的WorkerSinkTaskWorkerTask.java:214)java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) java.util.concurrent.FutureTask.run(FutureTask.java:266) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) java.lang.Thread.run(Thread.java:745) 由: org.apache.kafka.connect.errors.ConnectException: com.datastax.driver.core.exceptions.WriteTimeoutException: Cassandra超时引起,在写入查询时保持一致性cassandra.sink.CassandraSinkTask.put(CassandraSinkTask.java:65)\n\tat org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:524)\n\t... LOCAL_QUORUM (需要2份副本,但只有1份确认写入)com.datastax.driver.core.exceptions.WriteTimeoutException: Cassandra在一致性查询期间超时(需要2个副本,但只有1个确认写入)\n\tat
驱动程序配置:-
String user="test";
String password="test1234";
cluster = Cluster.builder()
.addContactPoints("some host address")
.withPort("1234")
.withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM))
.withCredentials(user, password)
.withSocketOptions(
new SocketOptions()
.setConnectTimeoutMillis(15000)
.setReadTimeoutMillis(0))
.build();
session = cluster.connect();发布于 2019-02-20 05:17:24
只有在DataCenter中有多个节点时才会发生这种情况。当您尝试使用LOCAL_QUORUM编写时,(Total2)+1节点应该可以编写数据。
假设在写过程中,3个节点中的有2个下降了。在这种情况下,您将得到更好的错误。
现在,一旦您看到节点,就有一种可能性:它们会向上出现,但是由于节点在随机情况下的高负载,会自动出现,&一旦加载在该节点上变得正常,它们就会自动出现。
因此,当您收到此错误时,应该在完全相同的时间检查负载、内存使用情况或CPU使用情况。理想情况下,您可以使用奥普塞特来监视这些事情。
https://stackoverflow.com/questions/54497042
复制相似问题