SSTable多个目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSTable多个目录相关的知识,希望对你有一定的参考价值。

我最近开始研究Cassandra,到目前为止,所有内容都有详细记录且易于理解。

但是我无法找到以下问题的任何答案:

为什么Cassandra数据目录(/ var / lib / cassandra / data / ks)具有相同SSTable的多个子目录?为什么创建新目录的原因是什么?

[centos@cs1 2017-06-03--19-46-14 cassandra $] ls -l /var/lib/cassandra/data/ks
total 8
drwxr-xr-x. 3 root root 4096 Jun  3 19:46 events-4f35e2c0482911e79119511599d22fe7
drwxr-xr-x. 3 root root 4096 Jun  3 19:41 events-7a34c34047f411e7aee3b9dc2549db1c

[centos@cs1 2017-06-03--19-46-10 cassandra $] tree
.
├── events-4f35e2c0482911e79119511599d22fe7
│   ├── ks-events-ka-4-CompressionInfo.db
│   ├── ks-events-ka-4-Data.db
│   ├── ks-events-ka-4-Digest.sha1
│   ├── ks-events-ka-4-Filter.db
│   ├── ks-events-ka-4-Index.db
│   ├── ks-events-ka-4-Statistics.db
│   ├── ks-events-ka-4-Summary.db
│   ├── ks-events-ka-4-TOC.txt
│   └── snapshots
└── events-7a34c34047f411e7aee3b9dc2549db1c
    └── snapshots
        └── 1496472654574-device_log
            └── manifest.json

5 directories, 9 files

我注意到刷新或压缩不会创建新目录。它只是添加/压缩最新的SSTable目录

答案

当您删除表时,默认情况下,Cassandra会拍摄快照以防止数据丢失(如果它是无意的)。在您的情况下,事件-7a34c34047f411e7aee3b9dc2549db1c是较旧的表,其中只有快照目录。

负责该操作的Cassandra.yaml参数如下

auto_snapshot(默认值:true)启用或禁用在键空间截断或删除表之前是否对数据进行快照。为防止数据丢失,强烈建议使用默认设置。如果设置为false,则会丢失截断或丢弃的数据。

请记住在生产环境中清理旧的表快照,否则它可能很容易堆积在数据目录大小上。

另一答案

如果删除键空间(ks,就像我的情况一样),它不会从文件系统中删除键空间目录(/ var / lib / cassandra / data / ks)(auto_snapshot:true)。这就是我仍然看到旧目录的原因。

另一答案

在删除表时,在cassandra中,它的目录保留在KeySpace目录中。在您的情况下,您似乎创建了一个表,其中包含您之前删除的表的名称。因为你有一个表有两个目录,其中一个是无用的,你可以rm -rf其目录或运行nodetool clearsnapshot。

以上是关于SSTable多个目录的主要内容,如果未能解决你的问题,请参考以下文章

cassandra如何使用memtable处理更新

LevelDB 源码剖析SSTable模块:SSTableBlock布隆过滤器LRU Cache

LevelDB 源码剖析SSTable模块:SSTableBlock布隆过滤器LRU Cache

LevelDB 源码剖析SSTable模块:SSTableBlock布隆过滤器LRU Cache

如何从 cassandra 或 hbase 中提取 leveldb 类型的数据存储(sstable + memtable)?

Chrome-Devtools代码片段中的多个JS库