My Cassandra cluster has plenty of free space, for now only about 30% of space are used
On Sun, May 4, 2014 at 6:36 AM, Yatong Zhang <bluefl...@gmail.com> wrote: > Hi there, > > It was strange that the 'xxx-tmp-xxx.db' file kept increasing until > Cassandra throw exceptions with 'No space left on device'. I am using CQL 3 > to create a table to store data about 200K ~ 500K per record. I have 6 > harddisks per node and cassandra was configured with 6 data > directories(ext4 file systems, Centos 6.5): > > data_file_directories: >> - /data1/cass >> - /data2/cass >> - /data3/cass >> - /data4/cass >> - /data5/cass >> - /data6/cass >> > > And every directory is on a standalone disk. But I just found when the > error occurred: > > [root@node5 images]# ll -hl >> total 3.6T >> drwxr-xr-x 4 root root 4.0K Jan 20 09:44 snapshots >> -rw-r--r-- 1 root root 456M Apr 30 13:42 >> mydb-images-tmp-jb-91068-CompressionInfo.db >> -rw-r--r-- 1 root root 3.5T Apr 30 13:42 mydb-images-tmp-jb-91068-Data.db >> -rw-r--r-- 1 root root 0 Apr 30 13:42 >> mydb-images-tmp-jb-91068-Filter.db >> -rw-r--r-- 1 root root 2.0G Apr 30 13:42 mydb-images-tmp-jb-91068-Index.db >> > > [root@node5 images]# df -hl > Filesystem Size Used Avail Use% Mounted on > /dev/sda1 49G 7.5G 39G 17% / > tmpfs 7.8G 0 7.8G 0% /dev/shm > /dev/sda3 3.6T 1.3T 2.1T 38% /data1 > /dev/sdb1 3.6T 1.4T 2.1T 39% /data2 > /dev/sdc1 3.6T 466G 3.0T 14% /data3 > /dev/sdd1 3.6T 1.3T 2.2T 38% /data4 > /dev/sde1 3.6T 1.3T 2.2T 38% /data5 > /dev/sdf1 3.6T 3.6T 0 100% /data6 > > *mydb-images-tmp-jb-91068-Data.db *almost occupied all the disk space (4T > harddisk with 3.6T actual usable size) and the error looks like: > > INFO [FlushWriter:4174] 2014-05-04 05:15:15,744 Memtable.java (line 403) >> Completed flushing >> /data3/cass/system/compactions_in_progress/system-compactions_in_progress-jb-16942-Data.db >> (42 bytes) for commitlog position ReplayPosition(segmentId=1398900356204, >> position=25024609) >> INFO [CompactionExecutor:3689] 2014-05-04 05:15:15,745 >> CompactionTask.java (line 115) Compacting >> [SSTableReader(path='/data3/cass/system/compactions_in_progress/system-compactions_in_progress-jb-16940-Data.db'), >> SSTableReader(path='/data3/cass/system/compactions_in_progress/system-compactions_in_progress-jb-16942-Data.db'), >> SSTableReader(path='/data3/cass/system/compactions_in_progress/system-compactions_in_progress-jb-16941-Data.db'), >> SSTableReader(path='/data3/cass/system/compactions_in_progress/system-compactions_in_progress-jb-16939-Data.db')] >> ERROR [CompactionExecutor:1245] 2014-05-04 05:15:15,745 >> CassandraDaemon.java (line 198) Exception in thread >> Thread[CompactionExecutor:1245,1,main] >> FSWriteError in /data2/cass/mydb/images/mydb-images-tmp-jb-92181-Filter.db >> at >> org.apache.cassandra.io.sstable.SSTableWriter$IndexWriter.close(SSTableWriter.java:475) >> at >> org.apache.cassandra.io.util.FileUtils.closeQuietly(FileUtils.java:212) >> at >> org.apache.cassandra.io.sstable.SSTableWriter.abort(SSTableWriter.java:301) >> at >> org.apache.cassandra.db.compaction.CompactionTask.runWith(CompactionTask.java:209) >> at >> org.apache.cassandra.io.util.DiskAwareRunnable.runMayThrow(DiskAwareRunnable.java:48) >> at >> org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) >> at >> org.apache.cassandra.db.compaction.CompactionTask.executeInternal(CompactionTask.java:60) >> at >> org.apache.cassandra.db.compaction.AbstractCompactionTask.execute(AbstractCompactionTask.java:59) >> at >> org.apache.cassandra.db.compaction.CompactionManager$BackgroundCompactionTask.run(CompactionManager.java:197) >> at >> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) >> at java.util.concurrent.FutureTask.run(FutureTask.java:262) >> at >> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) >> at java.lang.Thread.run(Thread.java:744) >> Caused by: java.io.IOException: No space left on device >> at java.io.FileOutputStream.write(Native Method) >> at java.io.FileOutputStream.write(FileOutputStream.java:295) >> at java.io.DataOutputStream.writeInt(DataOutputStream.java:197) >> at >> org.apache.cassandra.utils.BloomFilterSerializer.serialize(BloomFilterSerializer.java:34) >> at >> org.apache.cassandra.utils.Murmur3BloomFilter$Murmur3BloomFilterSerializer.serialize(Murmur3BloomFilter.java:44) >> at >> org.apache.cassandra.utils.FilterFactory.serialize(FilterFactory.java:41) >> at >> org.apache.cassandra.io.sstable.SSTableWriter$IndexWriter.close(SSTableWriter.java:468) >> ... 13 more >> ERROR [CompactionExecutor:1245] 2014-05-04 05:15:15,800 >> StorageService.java (line 367) Stopping gossiper >> WARN [CompactionExecutor:1245] 2014-05-04 05:15:15,800 >> StorageService.java (line 281) Stopping gossip by operator request >> INFO [CompactionExecutor:1245] 2014-05-04 05:15:15,800 Gossiper.java >> (line 1271) Announcing shutdown >> > > > I have changed my table to "LeveledCompactionStrategy" to reduce the disk > size needed when compaction, with: > > ALTER TABLE images WITH compaction = { 'class' : >> 'LeveledCompactionStrategy', 'sstable_size_in_mb' : '192' }; >> > > But the problem still exists: the file keep increasing, and after about 2 > or 3 days cassandra will fail due to 'No space left on device' error. If I > restart the node or using 'cleanup', it will resume to normal. > > I don't know is it because my configuration or it's just a bug, so would > any one please help to solve this issue? > > Thanks >