2017-06-12 1 views
0

Wir hatten einen Cassandra-Knoten, der einige sehr große Schreibvorgänge erhielt; Jeder war um 2,9 MB und schrieb ~ 200 mal. Normalerweise befindet sich jeder Knoten in unserem Cluster in einer Größenordnung von 800 GB. Etwa die Hälfte von 1,5 TB Speicherplatz auf unseren EC2-Instanzen.Was passiert, wenn ein Cassandra-Knoten während einer Komprimierung keinen Speicherplatz mehr hat?

Als dieser Knoten kompaktiert wurde, ging der Prozess viel länger als normal voran und die Festplattenbelegung erreichte fast die Grenze von 1,5 TB. Die Verdichtung dauerte über 2 Tage und wir hatten Glück, dass es etwas über 1.4TB war.

Was passiert, wenn ein Knoten während einer Komprimierung nicht mehr über genügend Speicherplatz verfügt? Kann es sich erholen? Reinigt es sich und versucht es erneut? Oder ist der Knoten voll und muss außer Betrieb genommen werden?

Antwort

2

Hängt davon ab, kann es von Version zu Version und Konfiguration ändern. Wenn genug Platz für die Kompaktierung zur Verfügung steht, wird es, und hoffentlich, abhängig vom Datenmodell, wieder heruntergehen. Einige Verdichtungsstrategien erfordern mehr (SizeTieredCompactionStrategy STCS ~ 50%) oder weniger (LeveledCompactionStrategy LCS ~ 80%) freien Platz, um "sicher" zu arbeiten. Ihr Datenmodell kann dies erheblich beeinflussen.

Was Sie erwarten können, wenn Sie tatsächlich, obwohl der Speicherplatz laufen entweder:

  • die disk failure policy Stöße, bei denen entweder kann es C * oder ignorieren deaktivieren.
  • Eine nicht erfasste IOException auf dem Kompaktierungs-Executor, die den Thread beendet. Schließlich, wenn das so weitergeht, sind alle Verdichtungsfäden tot und Sie werden in großen Schwierigkeiten stecken. Dies sollte nicht passieren, aber wegen misc Bugs, die sehr versionsspezifisch ist.
Verwandte Themen