2016-10-10 20 views
6

Chcę przesłać dane z jednego klastra kassandra (osiągniętego poprzez 192.168.0.200) do innego klastra kassandra (osiągniętego przez 127.0.0.1). Dane to 523 wiersze, ale każdy wiersz ma około 1 MB. Używam polecenia KOPIUJ OD i KOPIUJ DO. Pojawia się następujący komunikat o błędzie podczas wydawania polecenia Kopiuj do:Cassandra CQLSH OperationTimedOut error = Limit czasu żądania klienta. Zobacz Session.execute [_async] (timeout)

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). 

mam zmęczony, aby zmienić plik ~/.cassandra/cqlshrc do:

[connection] 
client_timeout = 5000 

Ale to nie pomogło. Dzięki za pomoc

Odpowiedz

1

Nie jest jasne, która wersja Cassandra używasz tutaj więc mam zamiar założyć 3.0.x

Funkcja COPY jest dobra, ale nie zawsze najlepszy wybór (czyli jeśli ciebie masz dużo danych), ale do tego możesz sprawdzić część swojego timeout settings w kassandra

Dokumenty tutaj pokazują również ustawienie pagetimeout, które może ci pomóc.

Przenoszenie danych między dwoma klastrami można wykonać na wiele innych sposobów. Można użyć dowolnego z następujących powodów:

  1. sstableloader
  2. Jednym z czynników, takich jak java driver
  3. Korzystanie iskrę do kopiowania danych z jednego klastra do innego, like in this example
  4. Korzystanie OpsCenter do clone a cluster
  5. The cassandra bulk loader (Znam wiele osób, które mogą tego używać)

Oczywiście # 3 i # 4 potrzebują kassandra DSE, ale to tylko po to, aby dać ci pomysł. Nie byłem pewien, czy używasz Apache Cassandra czy Datastax Enterprise Cassandra.

W każdym razie, miej nadzieję, że to pomaga!

2

Może zaistnieć potrzeba zwiększenia limitu czasu żądania (domyślnie: 10 sekund), a nie limitu czasu połączenia.

Spróbuj:

cqlsh --request-timeout=6000 
Powiązane problemy