Cassandra nodetool compact ничего не происходит

Я хочу удалить большое количество строк из определенной таблицы

Я сделал следующие шаги: 1) Установите gc_grace_seconds = 0 для таблицы 2) Удалил большое количество строк ~ 1 миллион 3) Запустил ./nodetool compact keyspace_name table_name

Однако, когда я запустил nodetool compact (шаг 3), ничего не происходит. Не начинается уплотнение. Из-за большого количества надгробий большинство моих запросов также истекают по тайм-ауту.

Таблица имеет следующие настройки:

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';

Я хочу сжать и избавиться от надгробий, чтобы я действительно мог избавиться от нежелательных данных.

У меня есть два узла в моем кластере с коэффициентом репликации 2. Поскольку я удалил, разница в размере между ними увеличилась. Там разница около 700мб. Я использую dsc-cassandra-2.1.10

cfstats показаны ниже

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

person GenerousJoker    schedule 17.01.2017    source источник


Ответы (1)


стратегия уплотнения диктует поведение компактного узла, и между версиями есть небольшие различия в API.

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

Чтобы удалить данные и надгробия:

  1. переключите стратегию сжатия на SizeTieredComapction
  2. запустите основное уплотнение, которое создаст один sstable (который не будет содержать надгробий / данных, покрытых надгробиями)
  3. переключите уплотнение обратно на LeveledCompaction

Выполнение крупного сжатия и переключение между стратегиями сжатия — это операция с интенсивным вводом-выводом, пожалуйста, примите это во внимание.

person Shlomi Livne    schedule 18.01.2017