apache cassandra compaction

Merhabalar , bu makalemde companction ile ilgili elimde ki tüm detayları yazma çalıştım umarım faydalı olur 🙂

  1. Compaction Nedir?

Compaction, Cassandra’nın SSTable (Sorted Strings Table) dosyalarını optimize etmek için kullandığı süreçtir. Zamanla veri ekleme, güncelleme ve silme işlemleri SSTable dosyalarının birikmesine neden olur. Compaction, bu dosyaları birleştirir ve düzenler.

2. Compaction’ın Amaçları

• Disk Alanı Yönetimi: Eski ve gereksiz verileri temizler, disk alanını optimize eder.

• Okuma Performansı: SSTable dosya sayısını azaltarak verilerin daha hızlı okunmasını sağlar.

• Silinen Verilerin Temizlenmesi: Tombstone olarak işaretlenen silinmiş veriler, compaction sırasında fiziksel olarak temizlenir.

• Fragmentasyonu Azaltma: SSTable’lar arasındaki veri fragmentasyonunu ortadan kaldırır. >> Fragmentasyon, verinin birden fazla SSTable (Sorted String Table) dosyasına dağılması durumudur. Cassandra’da, yazılan veri her zaman yeni SSTable dosyalarına eklenir (append-only). Bu süreçte:

1. Aynı anahtarın farklı sürümleri farklı SSTable dosyalarına yazılabilir.

2. SSTable’lar arasında aynı veri için çakışmalar veya gereksiz tekrarlar oluşabilir.

3. Silinen veya eski sürümdeki veriler de SSTable’larda kalmaya devam edebilir.

3. Compaction Türleri

1. Size-Tiered Compaction (Varsayılan):<STC>

• Benzer boyutlardaki SSTable dosyalarını birleştirir.

• Daha az disk I/O gerektirir.

• Büyük veri kümelerinde tercih edilir.

2. Leveled Compaction:<LC>

• SSTable dosyalarını sabit boyutlu seviyelere ayırır.

• Daha fazla disk I/O kullanır ancak okuma performansı yüksektir.

• Düşük gecikmeli iş yüklerinde önerilir.

3. Time-Window Compaction:<TWC>

• Zaman temelli verilerde kullanılır.

• Özellikle IoT veya log verileri gibi tarih sırasına göre analiz edilen durumlarda idealdir.

4. Compaction Nasıl Çalışır?

• Arka Plan Süreci: Cassandra, compaction işlemini arka planda otomatik olarak yapar.

• Manuel Tetikleme: İhtiyaç durumunda manuel olarak başlatılabilir.

• Tetiklenme Zamanı:

• SSTable dosya sayısı belirli bir eşiği geçtiğinde.

• Belirli bir zaman penceresinde.

• Manuel olarak nodetool ile.

5. Compaction’ın Artıları

• Daha az disk alanı kullanımı.

• Daha hızlı okuma performansı.

• Eski ve gereksiz verilerin temizlenmesi.

• Okuma ve yazma sırasında veri tutarlılığının artırılması.

6. Compaction’ın Eksileri

• Disk I/O Kullanımı: Büyük miktarda disk I/O gerektirir.

• CPU Kullanımı: Yoğun CPU yüküne neden olabilir.

• Gecikme: Aktif iş yüklerinde geçici gecikmelere yol açabilir.

Disk Alanı İhtiyacı: Geçici olarak daha fazla disk alanı gerekebilir (compaction sırasında).

7. Compaction Otomatik mi?

Evet, Cassandra’da compaction işlemi varsayılan olarak otomatik gerçekleştirilir. Ancak manuel olarak da başlatılabilir.

8. Parametreler ve Ayarlar

Compaction ile ilgili parametreler cassandra.yaml dosyasında bulunur:
. snapshot_before_compaction
• Yapılandırma: snapshot_before_compaction: false
• Açıklama:
• Compaction işleminden önce SSTable’ların bir snapshot’ının alınmasını sağlar.


default_compaction_strategy
• Açıklama:
• Bir tablo için özel bir Compaction stratejisi belirtilmediğinde uygulanacak varsayılan stratejiyi tanımlar.
• Genel Değerler:
• SizeTieredCompactionStrategy (STCS): Küçük SSTable’ları birleştirerek daha büyük SSTable’lar oluşturur.
• LeveledCompactionStrategy (LCS): SSTable’ları belirli boyutlarda organize ederek daha dengeli bir okuma performansı sunar.
• TimeWindowCompactionStrategy (TWCS): Zaman serisi verileri için optimize edilmiştir.


tombstone_warn_threshold ve tombstone_failure_threshold
• Yapılandırma:
• tombstone_warn_threshold: 1000
• tombstone_failure_threshold: 100000
• Açıklama:
• Bir partition’daki tombstone (silinmiş veri işaretleri) sayısına ilişkin eşik değerlerdir.
• tombstone_warn_threshold: Bu eşik aşılırsa bir uyarı verilir.
• tombstone_failure_threshold: Bu eşik aşılırsa işlem başarısızlıkla sonuçlanır.
• Etkisi:
• Tombstone’lar fazla olursa:
• Okuma işlemleri yavaşlar çünkü Cassandra gereksiz veriyi filtrelemek zorunda kalır.
• Disk alanı verimsiz kullanılır.
• Optimizasyon: Verilerinizi düzenli olarak temizlemek veya TTL kullanarak tombstone oluşumunu sınırlandırmak iyi bir uygulamadır.

• min_threshold: 4: Kompaksiyon işlemine başlamadan önce, en az 4 SSTable dosyasının birikmesi gerektiğini belirtir. Yani, eğer 4 veya daha fazla SSTable dosyası varsa, Cassandra bu dosyaları kompaktlamak için bir işlem başlatır.
• max_threshold: 32: Kompaksiyon işlemi için maksimum SSTable sayısını belirtir. Eğer bir SSTable grubu 32 veya daha fazla dosya içeriyorsa, Cassandra bu dosyaları kompaktlamak için işlem yapar.

9. Compaction Durumu Nasıl İzlenir?

nodetool compactionstats

ID                                    Compacted cf     Task Type    Progress
16d8f0d0-c2e5-11ec-a9d0-0800278798e9 keyspace.my_table Compaction  32.5%

Açıklamalar:
 • ID: İşlem için benzersiz kimlik.
 • Compacted cf: Hangi tablo üzerinde işlem yapıldığı.
 • Task Type: Compaction türü.
 • Progress: İşlem yüzdesi.


b) nodetool tablestats

Belirli bir tabloya ait istatistikleri verir.
Komut:

nodetool tablestats keyspace_name.table_name

Read Count: 120
Read Latency: 2.5 ms
Write Count: 300
Write Latency: 1.2 ms
SSTable Count: 3
Space used (live): 1.2 MB
Space used (total): 1.5 MB

 • SSTable Count: Tablonun kaç SSTable içerdiği.
 • Read/Write Count & Latency: Okuma ve yazma istatistikleri.
 • Space Used: Tablonun disk üzerinde kapladığı alan.


2. Ne Kadar Compaction Yapılmış?

Compaction işlemlerini görmek için:

nodetool compactionstats

İlgili Alanlar:
 • Compactions Completed: Tamamlanan compaction işlemi sayısı.
 • Data Compacted: Toplam compact edilen veri miktarı (bayt cinsinden).

3. Analiz İçin Kullanılan Metodlar
 • SSTable Sayısı: SSTable sayısı yüksekse, compaction daha sık tetiklenebilir.
 • Tombstone Verileri: Silinen verilerin çokluğu, sık compaction’a neden olur. Bu bilgiyi kontrol etmek için:

nodetool tablestats keyspace_name.table_name | grep -i tombstone
Çıktıda şu alanlara bakılır:
 • Maximum Tombstones Per Slice: Silinmiş veri miktarı.



4. Compaction İstatistikleri Nasıl Saklanır?

Cassandra kendi içinde compaction istatistiklerini bellekte tutar. Daha derinlemesine analiz için:
 • Metrics Tool: Prometheus veya Grafana gibi araçlarla Cassandra’nın metriklerini görselleştirebilirsiniz.
 • JMX (Java Management Extensions): Cassandra, JMX ile compaction süreçlerini yönetir.

Komut:
jconsole

 • org.apache.cassandra.metrics:type=Compaction

5. En son ne zaman compaction işlemi yapıldı ? 

ibrahimyildiz@192 sstable_activity-5a1ff267ace03f128563cfae6103c65e % nodetool compactionhistory
Compaction History: 
id                                   keyspace_name columnfamily_name   compacted_at            bytes_in bytes_out rows_merged compaction_properties       
63adb9e0-da60-11ef-a877-5b8e218dadd9 system_schema tables              2025-01-24T17:34:59.686 8893     3858      {1:4, 3:2}  {compaction_type:Compaction}
63a57c80-da60-11ef-a877-5b8e218dadd9 system_schema columns             2025-01-24T17:34:59.633 19841    7962      {1:4, 3:2}  {compaction_type:Compaction}
94076fe0-da57-11ef-a877-5b8e218dadd9 system        table_estimates     2025-01-24T16:31:55.344 26452    5924      {4:3}       {compaction_type:Compaction}
94061050-da57-11ef-a877-5b8e218dadd9 system        size_estimates      2025-01-24T16:31:55.340 14224    3258      {4:3}       {compaction_type:Compaction}
2101285a-da44-11ef-a877-5b8e218dadd9 system        sstable_activity_v2 2025-01-24T14:12:41.842 0        0         {}          {compaction_type:Compaction}
21012850-da44-11ef-a877-5b8e218dadd9 system        sstable_activity    2025-01-24T14:12:41.842 0        0         {}          {compaction_type:Compaction}
5341e440-da2f-11ef-a877-5b8e218dadd9 system        size_estimates      2025-01-24T11:43:46.883 14649    3270      {4:3}       {compaction_type:Compaction}
53458dc0-da2f-11ef-a877-5b8e218dadd9 system        table_estimates     2025-01-24T11:43:46.883 27355    5946      {4:3}       {compaction_type:Compaction}
0651ced0-d9d9-11ef-a877-5b8e218dadd9 system_schema indexes             2025-01-24T01:26:00.966 676      175       {4:2}       {compaction_type:Compaction}
064af100-d9d9-11ef-a877-5b8e218dadd9 system_schema aggregates          2025-01-24T01:26:00.933 204      51        {4:2}       {compaction_type:Compaction}
064524a0-d9d9-11ef-a877-5b8e218dadd9 system_schema functions           2025-01-24T01:26:00.889 204      51        {4:2}       {compaction_type:Compaction}
063d8380-d9d9-11ef-a877-5b8e218dadd9 system_schema views               2025-01-24T01:26:00.845 204      51        {4:2}       {compaction_type:Compaction}
0633bf80-d9d9-11ef-a877-5b8e218dadd9 system_schema types               2025-01-24T01:26:00.807 204      51        {4:2}       {compaction_type:Compaction}
0627ffb0-d9d9-11ef-a877-5b8e218dadd9 system_schema triggers            2025-01-24T01:26:00.758 204      51        {4:2}       {compaction_type:Compaction}
061cdc20-d9d9-11ef-a877-5b8e218dadd9 system_schema dropped_columns     2025-01-24T01:26:00.693 392      103       {4:2}       {compaction_type:Compaction}
060b7700-d9d9-11ef-a877-5b8e218dadd9 system_schema column_masks        2025-01-24T01:26:00.611 13240    3357      {4:2}       {compaction_type:Compaction}
06020120-d9d9-11ef-a877-5b8e218dadd9 system_schema keyspaces           2025-01-24T01:26:00.528 656      279       {1:4, 4:2}  {compaction_type:Compaction}
a5303680-d9d0-11ef-a877-5b8e218dadd9 system        local               2025-01-24T00:26:02.072 1095     719       {5:1}       {compaction_type:Compaction}
a539fa80-d9d0-11ef-a877-5b8e218dadd9 system        sstable_activity    2025-01-24T00:26:02.041 0        0         {}          {compaction_type:Compaction}
a5376270-d9d0-11ef-a877-5b8e218dadd9 system        sstable_activity_v2 2025-01-24T00:26:02.021 0        0         {}          {compaction_type:Compaction}
a534ca60-d9d0-11ef-a877-5b8e218dadd9 system        sstable_activity    2025-01-24T00:26:01.999 0        0         {}          {compaction_type:Compaction}
a52dec90-d9d0-11ef-a877-5b8e218dadd9 system        sstable_activity_v2 2025-01-24T00:26:01.979 0        0         {}          {compaction_type:Compaction}
8ad4ebb0-d8fd-11ef-a6cd-0355948a667f system        local               2025-01-22T23:14:54.010 1095     720       {5:1}       {compaction_type:Compaction}
b1fc60ca-d8fc-11ef-90f4-671c1004d7e0 system        sstable_activity    2025-01-22T23:08:50.154 0        0         {}          {compaction_type:Compaction}
b1fc60c0-d8fc-11ef-90f4-671c1004d7e0 system        sstable_activity_v2 2025-01-22T23:08:50.154 0        0         {}          {compaction_type:Compaction}
f9317690-d8ea-11ef-90f4-671c1004d7e0 system        table_estimates     2025-01-22T21:01:58.719 26109    5836      {4:3}       {compaction_type:Compaction}
f9245730-d8ea-11ef-90f4-671c1004d7e0 system        size_estimates      2025-01-22T21:01:58.654 14106    3220      {4:3}       {compaction_type:Compaction}
d3de7230-d8d1-11ef-90f4-671c1004d7e0 system        table_estimates     2025-01-22T18:01:58.669 26181    5820      {4:3}       {compaction_type:Compaction}
d3ce4590-d8d1-11ef-90f4-671c1004d7e0 system        size_estimates      2025-01-22T18:01:58.595 14167    3224      {4:3}       {compaction_type:Compaction}
0fb8c5f0-d8c1-11ef-90f4-671c1004d7e0 system        sstable_activity_v2 2025-01-22T16:01:57.612 0        0         {}          {compaction_type:Compaction}
0fb08890-d8c1-11ef-90f4-671c1004d7e0 system        sstable_activity    2025-01-22T16:01:57.559 0        0         {}          {compaction_type:Compaction}
ae8ec930-d8b8-11ef-90f4-671c1004d7e0 system        table_estimates     2025-01-22T15:01:58.656 26185    5834      {4:3}       {compaction_type:Compaction}
ae8182c0-d8b8-11ef-90f4-671c1004d7e0 system        size_estimates      2025-01-22T15:01:58.603 14114    3238      {4:3}       {compaction_type:Compaction}
893b0180-d89f-11ef-90f4-671c1004d7e0 system        table_estimates     2025-01-22T12:01:58.620 27187    5886      {4:3}       {compaction_type:Compaction}
89235ad0-d89f-11ef-90f4-671c1004d7e0 system        size_estimates      2025-01-22T12:01:58.501 14513    3235      {4:3}       {compaction_type:Compaction}
4a24a920-d84e-11ef-90f4-671c1004d7e0 system_schema columns             2025-01-22T02:20:23.629 14034    7899      {1:3, 2:2}  {compaction_type:Compaction}
4a1e8ea0-d84e-11ef-90f4-671c1004d7e0 system_schema tables              2025-01-22T02:20:23.558 6412     3781      {1:3, 2:2}  {compaction_type:Compaction}
ffac4ad0-d841-11ef-90f4-671c1004d7e0 system        sstable_activity    2025-01-22T00:52:24.581 0        0         {}          {compaction_type:Compaction}
ffac4ada-d841-11ef-90f4-671c1004d7e0 system        sstable_activity_v2 2025-01-22T00:52:24.581 0        0         {}          {compaction_type:Compaction}
ffa9b2c0-d841-11ef-90f4-671c1004d7e0 system        sstable_activity    2025-01-22T00:52:24.569 0        0         {}          {compaction_type:Compaction}
ff9d7dc0-d841-11ef-90f4-671c1004d7e0 system        local               2025-01-22T00:52:24.568 1085     720       {5:1}       {compaction_type:Compaction}
ffa63050-d841-11ef-90f4-671c1004d7e0 system        sstable_activity_v2 2025-01-22T00:52:24.549 0        0         {}          {compaction_type:Compaction}
ffa25fc0-d841-11ef-90f4-671c1004d7e0 system        sstable_activity    2025-01-22T00:52:24.523 0        0         {}          {compaction_type:Compaction}
ff9c6c50-d841-11ef-90f4-671c1004d7e0 system        sstable_activity_v2 2025-01-22T00:52:24.489 0        0         {}          {compaction_type:Compaction}
99c405d0-d690-11ef-9821-15ca7ac2d87b system        size_estimates      2025-01-19T21:10:01.648 14061    3217      {4:3}       {compaction_type:Compaction}
99c405da-d690-11ef-9821-15ca7ac2d87b system        table_estimates     2025-01-19T21:10:01.646 26121    5806      {4:3}       {compaction_type:Compaction}
7480dff0-d677-11ef-9821-15ca7ac2d87b system        table_estimates     2025-01-19T18:10:01.661 27029    5825      {4:3}       {compaction_type:Compaction}
746b8330-d677-11ef-9821-15ca7ac2d87b system        size_estimates      2025-01-19T18:10:01.588 14483    3220      {4:3}       {compaction_type:Compaction}
133bf940-d650-11ef-9821-15ca7ac2d87b system_schema keyspaces           2025-01-19T13:28:08.089 590      278       {1:6}       {compaction_type:Compaction}
00b40420-d650-11ef-9821-15ca7ac2d87b system        local               2025-01-19T13:27:37.019 979      707       {7:1}       {compaction_type:Compaction}
ibrahimyildiz@192 sstable_activity-5a1ff267ace03f128563cfae6103c65e %
Categories:

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir