在ConsistencyLevel.LOCAL_QUORUM上使用 CassandraSinkConnector 写入Cassandra时,我面临WriteTimeOutException。
我正在使用Cassandra 3.3.0版本
所以我需要如何处理和修复此异常的帮助?
堆栈跟踪:-
由于无法恢复的异常而导致的WorkerSinkTask.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(WorkerTask.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:在以一致性LOCAL_QUORUM进行写查询期间,Cassandra超时(需要2个副本,但只有1个副本确认了写入) cassandra.sink.CassandraSinkTask.put(CassandraSinkTask.java:65)\ n \ t org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:524)\ n \ t ... 10余\ n由... :com.datastax.driver.core.exceptions.WriteTimeoutException:在一致性LOCAL_QUORUM写入查询期间卡桑德拉超时(2复制品被要求,但只有1确认的写入)\ n \达
驱动程序配置: -
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();
答案 0 :(得分:0)
仅当您在DataCenter中具有多个节点时,才会发生这种情况。当您尝试使用 LOCAL_QUORUM进行写入时,(Total / 2)+1 个节点应该可以写入数据。
假设在写入过程中,在3个节点中,有2个发生故障。在这种情况下,您将获得上述错误。
现在,一旦您看到节点,就有可能: 它们将显示为UP,但是由于节点随机发生故障的高负载,并且一旦该节点上的负载恢复正常,它们就会自动启动。
因此,应该在出现此错误的同时检查负载,内存使用率或CPU使用率。理想情况下,您可以使用Opsceter来监视这些事情。