Исключение Cassandra WriteTimeOut на уровне ConsistencyLevel.LOCAL_QUORUM - PullRequest
0 голосов
/ 02 февраля 2019

Я сталкиваюсь с WriteTimeOutException при записи в Cassandra с использованием CassandraSinkConnector в ConsistencyLevel.LOCAL_QUORUM.

Я использую Cassandra 3.3.0 версии

Так что мне нужна помощь, какобработать и исправить это исключение?

Stack-Trace: -

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.kafache.kafap.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.ThreadPoolExecererdPoolExecutor.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 во время запроса на запись в соответствии LOCAL_QUORUM (требуется 2 реплики, но только 1 подтверждает запись) cassandra.sink.CassandraSinkTask.put (CassandraSinkTask.put.java: 65) \ n \ tat org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages (WorkerSinkTask.java:524) \ n \ t ... еще 10 \ nПричинено: com.datastax.driver.core.exceptions.WriteTimeoutException: тайм-аут Cassandra во время запроса записи в соответствии LOCAL_QUORUM (требовалось 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();

1 Ответ

0 голосов
/ 20 февраля 2019

Это происходит только тогда, когда у вас есть несколько узлов в вашем центре данных.Когда вы пытаетесь записать с LOCAL_QUORUM, тогда (Всего / 2) + 1 узлы должны быть готовы для записи данных.

Предположим, что во время записи, Из 3 узлов 2 пошли вниз .В этой ситуации вы получите ошибку выше.

Теперь есть возможность, когда вы увидите узлы: они будут отображаться ВВЕРХ, но из-за высокой нагрузки в случайные моменты времени, когда узел выключается и приходитUP автоматически, как только загрузка станет нормальной на этом узле.

Таким образом, вы должны проверять нагрузку, использование памяти или использование процессора в одно и то же время, когда вы получили эту ошибку.В идеале вы можете использовать Opsceter для мониторинга этих вещей.

...