Die Bestimmung, wie voll die Cassandra-Clusters
Ich habe gerade importierte eine Menge von Daten in einem 9-Knoten-Cassandra-cluster und bevor ich einen neuen ColumnFamily mit noch mehr Daten, ich möchte in der Lage sein, um festzustellen, wie voll mein cluster ist derzeit (in Bezug auf Speicher). Ich bin mir nicht sicher, was ich sehen müssen. Ich möchte nicht importieren, weitere 20-30 GB an Daten und weiß, ich sollte Hinzugefügt haben 5-6 Knoten.
Kurz gesagt, ich habe keine Ahnung, wenn ich zu wenige/viele Knoten jetzt für das, was in der cluster.
Jede Hilfe wäre sehr geschätzt 🙂
$ nodetool -h 192.168.1.87 ring
Address DC Rack Status State Load Owns Token
151236607520417094872610936636341427313
192.168.1.87 datacenter1 rack1 Up Normal 7.19 GB 11.11% 0
192.168.1.86 datacenter1 rack1 Up Normal 7.18 GB 11.11% 18904575940052136859076367079542678414
192.168.1.88 datacenter1 rack1 Up Normal 7.23 GB 11.11% 37809151880104273718152734159085356828
192.168.1.84 datacenter1 rack1 Up Normal 4.2 GB 11.11% 56713727820156410577229101238628035242
192.168.1.85 datacenter1 rack1 Up Normal 4.25 GB 11.11% 75618303760208547436305468318170713656
192.168.1.82 datacenter1 rack1 Up Normal 4.1 GB 11.11% 94522879700260684295381835397713392071
192.168.1.89 datacenter1 rack1 Up Normal 4.83 GB 11.11% 113427455640312821154458202477256070485
192.168.1.51 datacenter1 rack1 Up Normal 2.24 GB 11.11% 132332031580364958013534569556798748899
192.168.1.25 datacenter1 rack1 Up Normal 3.06 GB 11.11% 151236607520417094872610936636341427313
-
# nodetool -h 192.168.1.87 cfstats
Keyspace: stats
Read Count: 232
Read Latency: 39.191931034482764 ms.
Write Count: 160678758
Write Latency: 0.0492021849459404 ms.
Pending Tasks: 0
Column Family: DailyStats
SSTable count: 5267
Space used (live): 7710048931
Space used (total): 7710048931
Number of Keys (estimate): 10701952
Memtable Columns Count: 4401
Memtable Data Size: 23384563
Memtable Switch Count: 14368
Read Count: 232
Read Latency: 29.047 ms.
Write Count: 160678813
Write Latency: 0.053 ms.
Pending Tasks: 0
Bloom Filter False Postives: 0
Bloom Filter False Ratio: 0.00000
Bloom Filter Space Used: 115533264
Key cache capacity: 200000
Key cache size: 1894
Key cache hit rate: 0.627906976744186
Row cache: disabled
Compacted row minimum size: 216
Compacted row maximum size: 42510
Compacted row mean size: 3453
-
[default@stats] describe;
Keyspace: stats:
Replication Strategy: org.apache.cassandra.locator.SimpleStrategy
Durable Writes: true
Options: [replication_factor:3]
Column Families:
ColumnFamily: DailyStats (Super)
Key Validation Class: org.apache.cassandra.db.marshal.BytesType
Default column value validator: org.apache.cassandra.db.marshal.UTF8Type
Columns sorted by: org.apache.cassandra.db.marshal.UTF8Type/org.apache.cassandra.db.marshal.UTF8Type
Row cache size /save period in seconds /keys to save : 0.0/0/all
Row Cache Provider: org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider
Key cache size /save period in seconds: 200000.0/14400
GC grace seconds: 864000
Compaction min/max thresholds: 4/32
Read repair chance: 1.0
Replicate on write: true
Built indexes: []
Column Metadata:
(removed)
Compaction Strategy: org.apache.cassandra.db.compaction.LeveledCompactionStrategy
Compression Options:
sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor
- Ich bin nicht derjenige, der downvoted, und es ist eine gute Frage von selbst, aber ich vermute, dass die downvote hätte für cross-posting, mit dem Cassandra-Anwender-mailing-Liste.
- Ich habe tatsächlich geschrieben, diese auf der Kassandra-mailing-Liste, nachdem ich gepostet den Kommentar oben (und damit, nach der downvote selbst).
- Keine klare Funktions-und performance-Anforderungen für ein Lager (Cassandra), noch die HW specs zu empfehlen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Offensichtlich gibt es zwei Arten von Speicher -- Festplatte und RAM. Ich nehme an, du redest Speicherplatz.
Zuerst sollten Sie herausfinden, wie viel Speicherplatz Sie verwenden derzeit pro Knoten. Überprüfen Sie die on-disk-Nutzung der cassandra-Daten-Verzeichnis (standardmäßig
/var/lib/cassandra/data
) mit diesem Befehl:du -ch /var/lib/cassandra/data
Sie sollten dann vergleichen, dass die Größe der Festplatte, die gefunden werden können, mitdf -h
. Nur den Eintrag für diedf
Ergebnisse für die Festplatte cassandra Ihre Daten auf, durch die überprüfung der Montiert auf Spalte.Verwenden diese Statistiken, Sie sollten in der Lage sein zu berechnen, wie voll in % der cassandra-Daten-partition. In der Regel wollen Sie nicht zu nahe an 100%, weil cassandra ist normal Verdichtung Prozesse vorübergehend zu verwenden, die mehr Speicherplatz. Wenn Sie nicht genug haben, dann wird ein Knoten verfangen können mit einer full-disk, die kann schmerzhaft sein, zu beheben (wie ich Randbemerkung, die ich gelegentlich halten Sie einen "ballast" - Datei ein paar Gigs, die ich löschen können, nur für den Fall brauche ich zum öffnen etwas mehr Platz). Ich habe allgemein festgestellt, dass nicht mehr als etwa 70% disk-usage ist auf der sicheren Seite für die 0,8-Serie.
Wenn Sie eine neuere version von cassandra, dann würde ich empfehlen, geben die Gelevelt Verdichtung Strategie einen Schuss zu verringern, temporärem disk-Auslastung. Anstelle von potentiell doppelt so viel Speicherplatz, die neue Strategie wird in den meisten verwenden, 10x von einem kleinen, festen Größe (5 MB standardmäßig).
Lesen Sie mehr darüber, wie die Verdichtung erhöht kurzzeitig die Festplattennutzung diesem hervorragenden blog-post von Datastax: http://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandra Es erklärt auch die Verdichtung Strategien.
So, um ein wenig die Kapazitätsplanung, können Sie Abbildung wie viel mehr Platz Sie benötigen. Mit einem Replikations-Faktor 3 (was du verwendest oben), Zugabe von 20-30 GB an raw Daten möchte hinzufügen, 60-90GB nach der Replikation. Split zwischen Ihre 9 Knoten, das ist vielleicht 3GB mehr pro Knoten. Hat das hinzufügen dieser Art von disk-Auslastung pro Knoten schieben Sie sich zu nahe mit vollen Festplatten? Wenn ja, möchten Sie vielleicht zu prüfen, indem weitere Knoten zum cluster.
Ein anderer Hinweis ist, dass Ihr Knoten lädt nicht sehr auch-von 2GB bis 7GB. Wenn Sie mit der ByteOrderPartitioner über das zufällige, dann kann die Ursache für ungleichmäßige Belastung und "hotspots" in Ihrem ring. Sollten Sie zufällig verwendet, wenn möglich. Die andere Möglichkeit könnte sein, dass Sie zusätzliche Daten hängen, die muss sich gekümmert werden (Angedeutet Übergaben und Schnappschüsse in den Sinn kommen). Betrachten Sie die Reinigung, die durch ausführen
nodetool repair
undnodetool cleanup
auf jedem Knoten ein zu einer Zeit (sicher sein, zu Lesen, auf was diese zuerst machen!).Hoffe, das hilft.