Cassandra timeout cqlsh Abfrage große (ish) Menge an Daten

9

Ich mache ein Studentenprojekt, bei dem ein Cassandra-Datencluster erstellt und abgefragt wird.

Wenn meine Clusterlast gering war (um 30GB), liefen meine Abfragen ohne Probleme, aber jetzt, da es ziemlich viel größer ist (1 / 2TB), haben meine Abfragen ein Zeitlimit.

Ich dachte, dass dieses Problem auftreten könnte, also hatte ich diesen Wert in meiner cassandra.yaml-Datei geändert, bevor ich mit dem Generieren und Laden von Testdaten begann:

  

request_timeout_in_ms   (Standard: 10000) Das Standard-Timeout für andere, verschiedene Operationen.

Als ich jedoch diesen Wert auf 1000000 änderte, war Cassandra anscheinend beim Start hängen geblieben - aber das könnte gerade die große Auszeit bei der Arbeit gewesen sein.

Mein Ziel für die Datengenerierung ist 2 TB. Wie kann ich diesen großen Speicherplatz abfragen, ohne Timeouts zu verursachen?

Abfragen:

%Vor%

Ich habe einen Demo-Schlüsselraum mit den gleichen Schemata, aber eine viel kleinere Datengröße (~ 10GB) und diese Abfragen laufen gut in diesem Schlüsselraum.

Alle diese Tabellen, die abgefragt werden, haben Millionen von Zeilen und etwa 30 Spalten in jeder Zeile.

    
slmyers 03.04.2015, 18:12
quelle

3 Antworten

5

Ich gehe davon aus, dass Sie auch sekundäre Indizes verwenden. Sie erfahren aus erster Hand, warum Sekundärindexabfragen und ALLOW FILTERING-Abfragen nicht empfohlen werden, da diese Art von Entwurfsmustern für große Datensätze nicht skaliert werden. Erstellen Sie Ihr Modell mit Abfragetabellen neu, die Primärschlüsselsuchen unterstützen, da Cassandra so konzipiert ist, dass es funktioniert.

Bearbeiten

"Die Variablen, die eingeschränkt sind, sind Clusterschlüssel."

Richtig ... was bedeutet, dass sie keine Partitionsschlüssel sind. Ohne Einschränkung Ihres Partitionsschlüssels scannen Sie grundsätzlich Ihre gesamte Tabelle, da Clustering-Schlüssel nur innerhalb ihres Partitionsschlüssels gültig sind (Cluster-Daten).

    
Aaron 03.04.2015, 19:41
quelle
27

Wenn Sie Datastax cqlsh verwenden, können Sie Client-Timeout-Sekunden als Befehlszeilenargument angeben. Der Standardwert ist 10 .

$ cqlsh --request-timeout=3600

Datastax-Dokumentation

    
gcarvelli 14.10.2016 23:57
quelle
6

Um das Client-Timeout-Limit in Apache Cassandra zu ändern, gibt es zwei Techniken:

Technik 1: Das ist eine gute Technik:

%Vor%

Technik 2: Dies ist keine gute Technik, da Sie die Einstellung im Client-Programm (cqlsh) selbst ändern. Hinweis: Wenn Sie bereits Technik 1 geändert haben, wird die mit Technik 2 festgelegte Zeit überschrieben. Da haben Profileinstellungen höchste Priorität.

%Vor%     
Sashank Bhogu 05.11.2015 12:02
quelle

Tags und Links