2015-10-13 49 views
5

我在其中創建了一個keyspace和一個表(columnfamily)。 假設"ks.cf"即使從cassandra db和compaction刪除密鑰空間後,磁盤空間也不會釋放

在ColumnFamily中cf進入幾十萬行後,我看到使用df -h磁盤使用情況。

然後,我用cqlsh的命令DROP KEYSPACE ks刪除了keyspace。

也下降後,磁盤使用率remains the same。我也做過nodetool compact,但沒有運氣。

任何人都可以幫助我配置這些東西,以便刪除數據/行後磁盤使用情況得到釋放?

回答

2

如果您只是想刪除行,那麼您需要讓刪除步驟通過通常的刪除週期(delete_row-> tombstone_creation-> compaction_actually_deletes_the_row)。

現在,如果您完全想擺脫您的密鑰空間,請檢查您的cassandra數據文件夾(它應該在您的yaml文件中指定)。在我的情況下,它是「/ mnt/cassandra/data /」。在這個文件夾中,每個密鑰空間都有一個子文件夾(即ks)。您可以完全刪除與您的密鑰空間相關的文件夾。

如果您想保留該文件夾,最好知道cassandra在刪除它之前創建了您的密鑰空間的快照。基本上是所有數據的備份。你可以進入'ks'文件夾,找到快照子目錄。進入快照子目錄並刪除與您的keyspace drop相關的快照。

+0

是!它維護可以手動刪除的快照。但仍然使用df -h看到相同的磁盤空間,但是當我再次將數據推入cassandra時,它不會增長。也許操作系統或Cassandra做了某種我不知道的緩存或磁盤空間管理。 –

+0

請記住,對於所有cassandra寫入,數據首先保存在內存中,直到cassandra決定是時候以SStable形式將其刷新到磁盤。您可以通過'nodetool flush '手動將其刷新到磁盤。 – Aki

+0

哦,好的!那麼必須有一些配置參數決定何時刷新以及刷新多少數據。那些配置參數是什麼?我會在Cassandra官方文檔中找到它嗎? –

5

最近碰到這個問題。在刪除表格後,會創建一個快照。如果這不是有意的,這個快照將允許您回滾它。如果你想不過是硬盤空間還給你需要運行:

nodetool -h localhost -p 7199 clearsnapshot

適當節點上

。此外,您可以使用cassandra.yml中的auto_snapshot: false關閉快照。編輯:拼寫/語法

+0

我使用了相同的方法,但仍然存在空白的目錄,即使在clearsnapshot之後。我的猜測是刪除這些是安全的。任何人? – gubble

+1

@gubble是的,我最終由於OCD手動刪除它們。如果您有類似命名的表,請使用hashes排隊。 – Highstead