DSE Cassandra OperationTimedOutException

У меня есть таблица с очень большими данными в кассандре. Я пытаюсь прочитать данные в разделе с помощью драйвера dse через программу hadoop mapreduce. Для некоторого раздела может быть более 100 миллионов строк в разделе, и когда я пытаюсь прочитать эти разделы, я получаю исключение OperationTimedOutException.

Ниже приведена трассировка стека -

com.datastax.driver.core.exceptions.OperationTimedOutException: [X.X.X.X/X.X.X.X:XXXX] Timed out waiting for server response
    at com.datastax.driver.core.exceptions.OperationTimedOutException.copy(OperationTimedOutException.java:35)
    at com.datastax.driver.core.exceptions.OperationTimedOutException.copy(OperationTimedOutException.java:17)
    at com.datastax.driver.core.DriverThrowables.propagateCause(DriverThrowables.java:28)
    at com.datastax.driver.core.ArrayBackedResultSet$MultiPage.prepareNextRow(ArrayBackedResultSet.java:304)
    at com.datastax.driver.core.ArrayBackedResultSet$MultiPage.isExhausted(ArrayBackedResultSet.java:260)
    at com.datastax.driver.core.ArrayBackedResultSet$1.hasNext(ArrayBackedResultSet.java:134)
    at com.datastax.driver.core.ArrayBackedResultSet.all(ArrayBackedResultSet.java:123)

Я пробовал ниже вещи, и это не сработало для меня-

  1. setFetchSize() на большое число, например 250000.
  2. setReadTimeoutMillis() на 30 секунд

Любая помощь приветствуется :)


person Charitra kocheri    schedule 19.07.2018    source источник


Ответы (2)


Кажется, Cassandra не может выполнить запрос в указанное время. Вы можете увеличить параметр ниже в файле cassandra.yaml, чтобы иметь дело с тайм-аутами не намного выше. read_request_timeout_in_ms: write_request_timeout_in_ms:

Если это не поможет, вам следует заглянуть в журнал своей кассандры на наличие других аномалий, таких как надгробная плита и т. Д.

person Payal    schedule 19.07.2018
comment
GC_GRACE_SECONDS устанавливается равным нулю, поэтому никаких надгробий создаваться не будет. - person Charitra kocheri; 19.07.2018

В конфигурационный файл Cassandra добавлен параметр для ограничения времени отклика. Если ответ занимает больше времени, вы обязательно получите Timed out waiting for server response. Но это можно настроить вручную в файле cassandra.yaml.

Пожалуйста, измените следующие параметры в соответствии с необходимостью:

# How long the coordinator should wait for read operations to complete
read_request_timeout_in_ms: 5000
# The default timeout for other, miscellaneous operations
request_timeout_in_ms: 10000

Если у вас нет доступа к файлу конфигурации cassandra. Используйте функцию разбиения на страницы cassandra для запроса больших результатов, или вы можете обрабатывать разбиение на страницы в самом коде.

person Mehul Gupta    schedule 19.07.2018
comment
У меня нет доступа к файлу cassandra.yaml, поэтому я изменил эти настройки в коде mapreduce, используя методы драйвера setReadTimeoutMillis(). - person Charitra kocheri; 19.07.2018
comment
Драйвер не может отменить настройку Cassandra. Если вы ищете большое количество результатов, используйте функцию разбиения на страницы Cassandra или напишите код, который может помочь в разбиении результатов на страницы. - person Mehul Gupta; 19.07.2018