2013-12-14 24 views
1

我正在觀察運行Cassandra 2.0.3的6個節點的測試集羣,這很奇怪。我在每個節點上有大約2.5Tb的數據(文件系統方式)。Cassandra 2.0.3 - 沒有流量的無休止的壓縮

-- Address  Load  Tokens Owns Host ID        Rack 
UN 10.5.45.160 1.43 TB 256  16.4% 24496067-455a-46fc-b846-d0be2a24bd36 RAC1 
UN 10.5.45.156 1.4 TB  256  14.6% 4ff697a2-d501-4be7-ad05-82e37b2445c0 RAC1 
UN 10.5.45.159 1.56 TB 256  17.5% 65a3e232-2d7a-44cf-8cc4-046a9a26d3f5 RAC1 
UN 10.5.45.161 1.67 TB 256  16.4% 196f645e-d4e1-47ff-a7f5-da4d51cbd5c1 RAC1 
UN 10.5.45.157 1.63 TB 256  17.3% 750b8c45-480e-42a7-8cbc-1d8671df5e56 RAC1 
UN 10.5.45.158 1.53 TB 256  17.8% 985c8a08-3d92-4fad-a1d1-7135b2b9774a RAC1 

我在這個羣集上運行了一些流量測試,但是我在3天前停止了它。我明顯超載了集羣,我想讓它冷靜下來並查看我的測試參數。我看到在上週或更長時間內,我一直在等待4K壓縮。現在奇怪的部分。已經有3天沒有任何流量了,除了我已經做了幾個手動要求。然而,我所有的節點仍在無休止地進行壓縮。等待壓縮的次數幾乎沒有變化,有時會減少2-3次,有時會增加相似的次數,但是它保持在4300次左右。根據統計數據,我的整個羣集中有大約56K的sstables。所有具有任何實際數據量的表(事實上,只有4個表有很多數據)正在使用配置爲sstable大小的160-360 Mb的壓平策略。壓實量沒有節流。每個節點5個磁盤,而不是最慢的磁盤。磁盤負載是真實的,我看到他們都努力工作。然而,這些壓縮3天沒有進展。事實上,我發現磁盤使用情況幾乎不會改變。

我幾乎可以肯定,Cassandra或其設置有些問題,所以它無止境地重複壓縮相同和相同的數據。讀取工作正常,我看到在大多數情況下數據只從一個sstable加載。

有一點要提到的是:我患有CASSANDRA-6008問題,不得不手動清理正在進行的壓縮,以便能夠啓動節點。

我剛纔看了一下這些CF和它的sstables。注意到一些奇怪的東西:其中一個節點(其他人似乎或多或少有類似的情況)我有大約5330個sstable文件(...-Data.db)。其中約3900個是大約258 Mb左右。剩下的約1500個sstables在幾百Kb和200Mb之間,其中大多數實際上只有幾個Mb。

cqlsh:mykeyspace> describe table mytable;

CREATE TABLE ... (
.... 
) WITH 
    bloom_filter_fp_chance=0.100000 AND 
    caching='KEYS_ONLY' AND 
    dclocal_read_repair_chance=0.000000 AND 
    gc_grace_seconds=864000 AND 
    index_interval=128 AND 
    read_repair_chance=0.100000 AND 
    replicate_on_write='true' AND 
    populate_io_cache_on_flush='false' AND 
    default_time_to_live=0 AND 
    speculative_retry='99.0PERCENTILE' AND 
    memtable_flush_period_in_ms=0 AND 
    compaction={'sstable_size_in_mb': '256', 'class': 'LeveledCompactionStrategy'} AND 
    compression={'sstable_compression': 'SnappyCompressor'}; 

(經過一些調查後編輯)。看起來這裏是壓縮的情況。每個壓縮從L0中挑選32個文件。我覺得這是從LeveledManifest.getCompactionCandidates(條件):

if (generations[0].size() > MAX_COMPACTING_L0) 
       { 
... 

我有成千上萬sstables的在這個水平,因此屬於這種情況下,我相信。

然後,它壓縮這些每個約256Mb的32個sstables,並且每個創建32個新的約256Mb的sstables。等等等等。

+0

我已經提交了https://issues.apache.org/jira/browse/CASSANDRA-6496,它確實是一個錯誤 - 提供的補丁似乎有效。 –

回答