apache cassandra compaction
Merhabalar , bu makalemde companction ile ilgili elimde ki tüm detayları yazma çalıştım umarım faydalı olur :)
- 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 ile:
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 %