I've created a cluster of 3 cassandras and created a process to feed the cluster with data. The feed process is quite stressing the cluster with something around 10000 batches/sec and that runs for a couple of days continuously. So effectively as it is expected, cassandra creates a lot of sstable files and it almost continuously compacts those as well. But these files pile up and I currently have 300 of them on a 70GB/node database (200GB overall). But even if I stop the feed and the cluster is idle, they don't seem to continue the compaction and the number of files stay large. Is there a way to force cassandra to compact most of the files?
I am using leveled compaction, here is one of my tables:
CREATE TABLE data (
id bigint,
data blob,
PRIMARY KEY (id)
) WITH
bloom_filter_fp_chance=0.100000 AND
caching='KEYS_ONLY' AND
comment='' AND
dclocal_read_repair_chance=0.000000 AND
gc_grace_seconds=864000 AND
index_interval=128 AND
read_repair_chance=0.100000 AND
replicate_on_write='true' AND
populate_io_cache_on_flush='false' AND
default_time_to_live=0 AND
speculative_retry='99.0PERCENTILE' AND
memtable_flush_period_in_ms=0 AND
compaction={'class': 'LeveledCompactionStrategy'} AND
compression={'sstable_compression': 'LZ4Compressor'};