2016-08-09 188 views
1

Mit dem nodetool status kann ich die Load jedes Knotens auslesen. Das Hinzufügen oder Entfernen von Daten aus der Tabelle sollte direkten Einfluss auf diesen Wert haben. Der Wert bleibt jedoch gleich, unabhängig davon, wie oft der Befehl nodetool status ausgeführt wird.Cassandra Ladezustand wird nicht aktualisiert (nodetool Status)

Cassandra documentation besagt, dass der Load Wert 90 Sekunden zum Aktualisieren benötigt. Auch wenn zwischen dem Ausführen des Befehls mehrere Minuten liegen, ist das Ergebnis immer falsch. Die einzige Möglichkeit, diesen Wert zu aktualisieren, bestand darin, den Knoten neu zu starten.

Ich glaube nicht, dass es relevant ist, aber ich sollte hinzufügen, dass ich docker containers verwende, um den Cluster zu erstellen.

Antwort

5

Im documentation, die Sie verknüpft, unter Load es sagt auch

Da alle SSTable Datendateien enthalten sind, alle Daten, die nicht gereinigt, wie TTL abgelaufen Zelle oder tombstoned Daten werden gezählt .

Es ist wichtig zu beachten, dass, wenn Cassandra deletes Daten, werden die Daten mit einem Grabstein markiert und eigentlich erst Verdichtung entfernt erhalten. Somit nimmt die Belastung nicht sofort ab. Sie können force a major compaction mit nodetool compact.

Sie können auch versuchen, memtable zu leeren, wenn Daten hinzugefügt werden. Apache notes dass

Cassandra schreibt zuerst in die CommitLog geschrieben, und dann zu einem pro-ColumnFamily Struktur genannt memTable. Wenn ein Memtable voll ist, wird er auf als SSTable geschrieben.

So müssen Sie entweder mehr Daten hinzuzufügen, bis die memTable voll ist, oder Sie können ein nodetool flush (dokumentiert here) laufen, es zu erzwingen.

+0

Vielen Dank. Hast du eine Referenz zum Spülen des Memtables? – Demetris

+0

Ich aktualisierte meine Antwort mit mehr Details und Links. – jackiezhu