2017-01-17 5 views
0

ichCassandra nodetool kompakt nichts passiert

Ich habe die folgenden Schritte, um eine große Menge von Zeilen aus einer bestimmten Tabelle löschen möchten: 1) Set gc_grace_seconds = 0 für die Tabelle 2) eine große Anzahl von Zeilen gelöscht ~ 1 Million 3) Lief ./nodetool compact keyplace_name tabellenname

Wenn ich jedoch nodetool compact (Schritt 3) ausgeführt habe passiert nichts. Es beginnt nicht mit der Verdichtung. Wegen der großen Anzahl von Tombstones sind die meisten meiner Anfragen nun ebenfalls abgelaufen.

Die Tabelle hat die folgenden Einstellungen:

AND bloom_filter_fp_chance = 0.001 
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}' 
    AND comment = '' 
    AND compaction = {'tombstone_threshold': '0.2', 'tombstone_compaction_interval': '86400', 'class': 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'} 
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'} 
    AND dclocal_read_repair_chance = 0.1 
    AND default_time_to_live = 0 
    AND gc_grace_seconds = 0 
    AND max_index_interval = 2048 
    AND memtable_flush_period_in_ms = 0 
    AND min_index_interval = 128 
    AND read_repair_chance = 0.0 
    AND speculative_retry = '99.0PERCENTILE'; 

Ich möchte von den Grabsteinen verdichten und loszuwerden, so dass ich eigentlich loswerden der unerwünschten Daten erhalten können.

Ich habe zwei Knoten in meinem Cluster mit Replikationsfaktor 2 Da ich die Löschungen der Unterschied in der Größe zwischen den beiden hat zugenommen. Es gibt einen Unterschied von etwa 700 MB. Ich bin dsc-cassandra-2.1.10

cfstats sind unten gezeigt

Keyspace: keyspace1 
     Read Count: 16316 
     Read Latency: 12.23892982348615 ms. 
     Write Count: 11078808 
     Write Latency: 0.6955001765532899 ms. 
     Pending Flushes: 0 
       Table: table1 
       SSTable count: 92 
       SSTables in each level: [1, 4, 38, 49, 0, 0, 0, 0, 0] 
       Space used (live): 38247164244 
       Space used (total): 38247164244 
       Space used by snapshots (total): 26692664189 
       Off heap memory used (total): 14695952 
       SSTable Compression Ratio: 0.32499125289530584 
       Number of keys (estimate): 2788 
       Memtable cell count: 16632 
       Memtable data size: 1839846 
       Memtable off heap memory used: 0 
       Memtable switch count: 93 
       Local read count: 16316 
       Local read latency: 12.239 ms 
       Local write count: 11078808 
       Local write latency: 0.696 ms 
       Pending flushes: 0 
       Bloom filter false positives: 331 
       Bloom filter false ratio: 0.00000 
       Bloom filter space used: 10960 
       Bloom filter off heap memory used: 10224 
       Index summary off heap memory used: 3672 
       Compression metadata off heap memory used: 14682056 
       Compacted partition minimum bytes: 216 
       Compacted partition maximum bytes: 3449259151 
       Compacted partition mean bytes: 25823653 
       Average live cells per slice (last five minutes): 405.3014160485502 
       Maximum live cells per slice (last five minutes): 5002.0 
       Average tombstones per slice (last five minutes): 0.0 
       Maximum tombstones per slice (last five minutes): 0.0 

Antwort

0

Verdichtungsstrategie diktiert das Verhalten von nodetool kompakt und es gibt feine Unterschiede in der api zwischen den Versionen

http://docs.datastax.com/en/archived/cassandra/3.x/cassandra/tools/toolsCompact.html mit vs https://docs.datastax.com/en/cassandra/2.1/cassandra/tools/toolsCompact.html

Um die Daten und Tombstones zu entfernen:

  1. Schalter die Verdichtungsstrategie SizeTieredComapction
  2. Lauf eine große Verdichtung, die ein sstable erzeugen
  3. Schalter Kompaktierung zurück
  4. LeveledCompaction (das wird nicht tombstones/Daten durch tombstones abgedeckt halten)

Executing Eine große Verdichtung und der Wechsel zwischen Verdichtungsstrategien ist ein IO-intensiver Betrieb - bitte berücksichtigen Sie das.