【发布时间】:2020-05-06 05:01:34
【问题描述】:
我正在使用 CQLSSTableWriter 在离线/批量模式下编写 sstables。写操作期间不强制执行该顺序。在我使用 sstableloader 将数据加载到 cassandra 集群之前是否可以强制执行压缩?
【问题讨论】:
标签: cassandra
我正在使用 CQLSSTableWriter 在离线/批量模式下编写 sstables。写操作期间不强制执行该顺序。在我使用 sstableloader 将数据加载到 cassandra 集群之前是否可以强制执行压缩?
【问题讨论】:
标签: cassandra
SStables 在本质上是不可变的,而且 sstable 不仅仅是一个文件,它还包含带有元数据的数据。 元数据包括 index.db 等。有关详细信息,请查看 datastax 文档。
所以我们不应该手动操作,因为每个 sstable 中的令牌范围会在压缩期间发生变化,并且生成的 sstable 将不会使数据均匀分布。 压缩也将导致更大的 sstable 并且将具有该 sstable 的节点将成为热点。
最好/建议不要手动操作。
【讨论】:
您可以通过nodetool drain 清空节点,然后安全地继续压缩。
【讨论】:
nodetool drain 与“手动”生成的 SSTables 的压缩有什么关系?