在《如何安装和配置Cassandra》中,我们可以在DataFileDirectories中配置数据的存放位置。

当Cassandra启动后,向其中插入的数据就会放在DataFileDirectories的目录下,如图:

这里有2个Column Family,分别是Standrad1,Super1。

大家可以想象,如果没有压缩功能的话,那么随着数据量的增加,DataFileDirectories目录中的文件会越来越多。

在Cassandra中的压缩功能避免了在DataFileDirectories目录中存在大量的数据文件。

设置压缩参数

当Cassandra启动以后,我们可以使用sh bin/nodetool –h hostname –p jmxport getcompactionthreshold 获得到当前Cassandra的压缩参数:最小压缩值,最大压缩值。

我们也可以使用sh bin/nodetool –h hostname –p jmxport setcompactionthreshold minthreshold maxthreshold的命令设置Cassandra的最小压缩值和最大压缩值。

手工关闭压缩功能

为了测试,我们可以先将压缩功能关闭,执行如下命令即可:sh bin/nodetool –h hostname –p jmxport setcompactionthreshold 0 0

执行完这个命令,Cassandra的压缩功能就关闭了,当我们插入大量数据以后,你会发现在DataFileDirectories目录下出现了大量的数据文件。

手工启动强制压缩

在上一步中,我们关闭了压缩,这样做的好处是可以提高大数据量导入的速度(后面会介绍到这个问题)。但是缺点是导致DataFileDirectories目录下出现了大量的数据文件。

如果想将这些数据文件压缩。我们可以执行如下命令: sh bin/nodetool –h hostname –p jmxport  compact

当执行完这个命令后,Cassandra会将不同的Column Family文件分别合并成一个文件。合并的顺序是按照数据文件产生的时间先后顺序进行合并的。

正常的压缩流程

由于Cassandra的压缩参数是无法在配置文件中设定的,所以每次启动Cassandra,都会使用默认的参数:最小压缩值 4,最大压缩值 32。

压缩操作会在已下2个场景中使用:

Cassandra启动

当Cassandra启动的时候,会执行压缩操作:遍历每一个CF的文件数量,如果超过了最小值4,那么就会求一个平均值( (4 + 32)/2 ),然后按照数据文件产生的时间先后顺序排序,取这个平均值和实际文件数量的较小的数来做一个文件的合并操作。

有新的SSTable文件需要写入磁盘

当memtable中的数据达到阀值时(这个阀值的大小可以在配置文件中指定),将会产生一个新的SSTable文件。这个时候,系统就会进行上面“Cassandra启动”的逻辑进行判断,是否需要进行压缩操作,如果需要进行压缩操作,哪些文件就会被合并。

以上介绍的这些就是Cassandra中压缩操作的工作情况。更多的详细信息可以参考org.apache.cassandra.db.CompactionManager。

希望这篇文章能帮助你理解Cassandra中的压缩操作。

更多关于Cassandra的文章:http://www.cnblogs.com/gpcuster/tag/Cassandra/

介绍Cassandra中的压缩相关推荐

  1. Cassandra中的数据建模

    在关系数据模型中,我们为域中的每个对象建模关系/表. 对于Cassandra,情况并非如此.本文将详细介绍在Cassandra中进行数据建模时需要考虑的所有方面. 以下是Cassandra数据建模的粗 ...

  2. python zipfile教程_Python中zipfile压缩文件模块的基本使用教程

    zipfile Python 中 zipfile 模块提供了对 zip 压缩文件的一系列操作. f=zipfile.ZipFile("test.zip",mode="&q ...

  3. 探索HTTP传输中gzip压缩的秘密

    探索HTTP传输中gzip压缩的秘密 为什么要开启gZip 我们给某人发送邮件时,我们在传输之前把自己的文件压缩一下,接收方收到文件后再去解压获取文件.这中操作对于我们来说都已经司空见惯.我们压缩文件 ...

  4. 如何压缩css代码,在开发中怎么压缩js和css?有哪些办法?

    在开发的时候我们会选择将自己的代码进行压缩和打包,那么对于"在开发中怎么压缩js和css?有哪些办法?"这个问题小编为带来了一些干货. 对于压缩 js 与 css,我们一般是使用在 ...

  5. Word2010中怎样压缩图片使文件变小

    我们在使用Word2010编辑文档的时候,为了使含有大量图片的文件变小,可以通过压缩图片实现.本篇经验就来介绍一下压缩图片的两种方法. 一.手动压缩图片 1.我们首先打开Word2010文档页面,选中 ...

  6. linux中用zip压缩文件,详解Linux中zip压缩和unzip解压缩命令及使用详解

    下面给大家介绍下Linux中zip压缩和unzip解压缩命令详解 1.把/home目录下面的mydata目录压缩为mydata.zip zip -r mydata.zip mydata #压缩myda ...

  7. linux中zip文件解压命令,Linux中zip压缩和unzip解压缩命令使用方法

    Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统.在Linux中,我们可以利用命令进行文件压缩,即zip压缩和unzip解压缩,这篇文章主要介绍了详解Linux中zi ...

  8. 会议重点介绍芯片设计中的人工智能

    会议重点介绍芯片设计中的人工智能 Conference highlights AI in chip design, IoT 旧金山-谷歌正在试验机器学习(ML)来执行IC设计中的地点和路线,并取得了很 ...

  9. 介绍Python中的__future__模块

    这篇文章主要介绍了介绍Python中的__future__模块,__future__模块使得在Python2.x的版本下能够兼容更多的Python3.x的特性,需要的朋友可以参考下 Python的每个 ...

最新文章

  1. oracle 统计一年中每个月数据总和_excel表格有每月数据 怎样统计全年的-用excel公式怎样计算每年每个月的数据总和?...
  2. 郁闷的时候看看这头驴,改变你的心态!
  3. Debian 8 直接升级到 Debian 9
  4. [Java并发编程(一)] 线程池 FixedThreadPool vs CachedThreadPool ...
  5. Axure external link打开原理
  6. 如何在ashx页面获取Session值 (仅供个人参考)
  7. 群联固态硬盘修复工具_固态硬盘掉速修复小教程,SATA和NVMe协议通用
  8. 【以太坊源码】I.区块和交易,合约和虚拟机
  9. C++类的定义要注意最后的分号不要丢了
  10. 释放空间后将指针置空
  11. C++ 句柄类的原理以及设计
  12. 学生信息管理系统(数据库)
  13. 【Ruby on Rails全栈课程】2.1 ruby语言入门
  14. ESP32硬件参考详细说明
  15. Windows 10正式版官方原版ISO镜像下载汇总!!!
  16. 数据结构PTA案例7-1.3 寻找大富翁
  17. jQuery UI框架
  18. mysql被禁用了怎么办_数据库mysql存储遇到禁用怎么办?
  19. 求生之路2 服务器 修改难度,求生之路2服务器指令及难度参数设置
  20. 1、网络七层的具体作用

热门文章

  1. 差分数组 and 树上差分
  2. Codeforces Round #337 (Div. 2) C. Harmony Analysis
  3. QHBoxLayout
  4. SQL Server 的 Statistics 簡介
  5. 二叉树的左右子树交换
  6. 2018-2019 20165227《信息安全系统设计基础》第三周学习总结
  7. cordova 插件开发
  8. 异常记录与处理-Cannot find class [org.apache.commons.dbcp.BasicDataSource]
  9. Keymob浅析2016网络营销十大趋势
  10. java获取URL参数(get方式,并且你不知道他末尾有什么参数名)