介绍Cassandra中的压缩
在《如何安裝和配置Cassandra》中,我們可以在DataFileDirectories中配置數(shù)據(jù)的存放位置。
當(dāng)Cassandra啟動(dòng)后,向其中插入的數(shù)據(jù)就會(huì)放在DataFileDirectories的目錄下,如圖:
這里有2個(gè)Column Family,分別是Standrad1,Super1。
大家可以想象,如果沒有壓縮功能的話,那么隨著數(shù)據(jù)量的增加,DataFileDirectories目錄中的文件會(huì)越來越多。
在Cassandra中的壓縮功能避免了在DataFileDirectories目錄中存在大量的數(shù)據(jù)文件。
設(shè)置壓縮參數(shù)
當(dāng)Cassandra啟動(dòng)以后,我們可以使用sh bin/nodetool –h hostname –p jmxport getcompactionthreshold 獲得到當(dāng)前Cassandra的壓縮參數(shù):最小壓縮值,最大壓縮值。
我們也可以使用sh bin/nodetool –h hostname –p jmxport setcompactionthreshold minthreshold maxthreshold的命令設(shè)置Cassandra的最小壓縮值和最大壓縮值。
手工關(guān)閉壓縮功能
為了測(cè)試,我們可以先將壓縮功能關(guān)閉,執(zhí)行如下命令即可:sh bin/nodetool –h hostname –p jmxport setcompactionthreshold 0 0
執(zhí)行完這個(gè)命令,Cassandra的壓縮功能就關(guān)閉了,當(dāng)我們插入大量數(shù)據(jù)以后,你會(huì)發(fā)現(xiàn)在DataFileDirectories目錄下出現(xiàn)了大量的數(shù)據(jù)文件。
手工啟動(dòng)強(qiáng)制壓縮
在上一步中,我們關(guān)閉了壓縮,這樣做的好處是可以提高大數(shù)據(jù)量導(dǎo)入的速度(后面會(huì)介紹到這個(gè)問題)。但是缺點(diǎn)是導(dǎo)致DataFileDirectories目錄下出現(xiàn)了大量的數(shù)據(jù)文件。
如果想將這些數(shù)據(jù)文件壓縮。我們可以執(zhí)行如下命令: sh bin/nodetool –h hostname –p jmxport? compact
當(dāng)執(zhí)行完這個(gè)命令后,Cassandra會(huì)將不同的Column Family文件分別合并成一個(gè)文件。合并的順序是按照數(shù)據(jù)文件產(chǎn)生的時(shí)間先后順序進(jìn)行合并的。
正常的壓縮流程
由于Cassandra的壓縮參數(shù)是無法在配置文件中設(shè)定的,所以每次啟動(dòng)Cassandra,都會(huì)使用默認(rèn)的參數(shù):最小壓縮值 4,最大壓縮值 32。
壓縮操作會(huì)在已下2個(gè)場(chǎng)景中使用:
Cassandra啟動(dòng)
當(dāng)Cassandra啟動(dòng)的時(shí)候,會(huì)執(zhí)行壓縮操作:遍歷每一個(gè)CF的文件數(shù)量,如果超過了最小值4,那么就會(huì)求一個(gè)平均值( (4 + 32)/2 ),然后按照數(shù)據(jù)文件產(chǎn)生的時(shí)間先后順序排序,取這個(gè)平均值和實(shí)際文件數(shù)量的較小的數(shù)來做一個(gè)文件的合并操作。
有新的SSTable文件需要寫入磁盤
當(dāng)memtable中的數(shù)據(jù)達(dá)到閥值時(shí)(這個(gè)閥值的大小可以在配置文件中指定),將會(huì)產(chǎn)生一個(gè)新的SSTable文件。這個(gè)時(shí)候,系統(tǒng)就會(huì)進(jìn)行上面“Cassandra啟動(dòng)”的邏輯進(jìn)行判斷,是否需要進(jìn)行壓縮操作,如果需要進(jìn)行壓縮操作,哪些文件就會(huì)被合并。
?
以上介紹的這些就是Cassandra中壓縮操作的工作情況。更多的詳細(xì)信息可以參考o(jì)rg.apache.cassandra.db.CompactionManager。
希望這篇文章能幫助你理解Cassandra中的壓縮操作。
?
更多關(guān)于Cassandra的文章:http://www.cnblogs.com/gpcuster/tag/Cassandra/
總結(jié)
以上是生活随笔為你收集整理的介绍Cassandra中的压缩的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如此智能的Windows Embedde
- 下一篇: Microsoft二任CEO业绩对比,说