Używam dsbulk 1.6.0, aby rozładować dane z cassandra 3.11.3.

Każde rozładunek powoduje dziko różne liczenia wierszy. Oto wyniki z 3 inwokacji rozładowywania, na tym samym klastrze, łącząc się z tym samym gospodarzem Cassandra. Rozładowany stół jest zawsze dołączony, dane nigdy nie są usuwane, więc nie powinien wystąpić zmniejszenie rozładowanych wierszy. W klastrze znajduje się 3 bazy danych Cassandra i współczynnikiem replikacji 3, więc wszystkie dane powinny być obecne na wybranym gospodarzu. Ponadto zostały one wykonywane w szybkiej sukcesji, liczba dodatkowych rzędów byłaby w setkach (jeśli były), nie w dziesiątkach tysięcy.

Uruchom 1:

│ Łącznie |. nie powiodło się |. Wiersze / s | P50MS |. P99MS |. P999ms
. │ 10,937 |. 7 |. 97 |. 15,935.46 |. 20,937.97 |. 20,937.97
.. │ Operacja UNload_20201024-084213-097267 Ukończył 7 błędów 1 minuta i 51 sekund.

Uruchom 2:

│ Łącznie |. nie powiodło się |. Wiersze / s | P50MS |. P99MS |. P999ms
. │ 60,558 |. 3 |. 266 |. 12.551.34 |. 21,609.05 |. 21,609.05
. │ Obsługa Unload_20201025-084208-749105 Ukończono z 3 błędami 3 minuty i 47 sekund.

Uruchom 3:

│ Łącznie |. nie powiodło się |. Wiersze / s | P50MS |. P99MS |. P999ms
. │ 45,404 |. 4 |. 211 |. 16,664.92 |. 30,870.08 |. 30,870.08
.. │ Obsługa UNload_20201026-084206-791305 Zakończono za pomocą 4 błędów w 3 minuty i 35 sekund.

Wygląda na to, że Run 1 brakuje większości danych. Run 2 może być bliżej zakończenia, a Run 3 brakuje znaczących danych.

Przywołuję się w następujący sposób:

dsbulk unload -h $CASSANDRA_IP -k $KEYSPACE -t $CASSANDRA_TABLE > $DATA_FILE

Zakładam, że nie jest to oczekiwane zachowanie dla dsbulk. Jak skonfigurować go do niezawodnego rozładowania kompletnej tabeli bez błędów?

1
Tim 26 październik 2020, 21:04

1 odpowiedź

Najlepsza odpowiedź

Dane mogą brakować w hoście, jeśli host nie dotarł, gdy dane zostały napisane, a wskazówki nie były odtwarzane, i nie działa okresowo. A ponieważ Dsbulk odczytuje domyślnie z poziomem spójności LOCAL_ONE, różni gospodarze zapewnią różne widoki (host, który dostarczasz, jest tylko punktem kontaktowym - po tym, jak zostanie odkryta topologia klastra, a Dsbulk wybierze oparte na replikę na zasadach równoważenia obciążenia).

Można egzekwować, że Dsbulk przeczytał dane z innym poziomem spójności, używając opcji wiersza poleceń -cl (Doc). Można porównać wyniki za pomocą LOCAL_QUORUM lub ALL - w tych trybach Cassandra będzie również "naprawić" niespójności, ponieważ zostaną odkryte, chociaż byłoby to znacznie wolniejsze i wzmacniacze; zwiększy ładunek na węzły ze względu na naprawione dane pisze.

3
Alex Ott 26 październik 2020, 19:06