Cassandra: bakım


9

Cassandra konusunda deneyimim yok, ancak SQL tabanlı ilişkisel veritabanlarıyla ilgili bazı deneyimlerim var.

Cassandra'nın bir kez konuşlandırılmasının nasıl sürdürüleceği hakkında en iyi uygulama bilgilerini bulamadım. Veritabanını VAKUM yapmak gerekli mi? Okuma / yazma yüklerinin depoda parçalanmaya neden olduğunu düşünmeliyim.

Veya daha genel olarak: Cassandra üretim dağıtımını sürdürmek için en iyi uygulamalar nelerdir? Sistemin sağlığını korumak için düzenli aralıklarla ne yapılması gerekir? Kullanım kılavuzu gerçekten bu yönü tartışmıyor.

Teşekkürler.


Tamam, şimdi sıkıştırmanın büyük bir anlaşma olduğunu ve otomatik olarak çalıştığını anlıyorum; ancak, Linux üzerinde uzun bir süre küme çalıştırırken endişelenecek başka şeyler var mı?
Mayur Patel

Yanıtlar:


14

Genel olarak, iyi tasarlanmış bir kümeye yıllarca dokunulmadan yaşayabilir. Yıllarca el ele tutuşan kümelerim vardı. Ancak, bazı yönergeler aşağıdadır:

İzleme son derece önemlidir:

1) Gecikmeleri izleyin. Gecikmeleri takip etmek için merkez merkezini veya en sevdiğiniz metrik araçlarını kullanın. Artan gecikmeler, GC duraklamaları (okuma iş yüklerinde yazma iş yüklerinden daha yaygın), kararlı sorunlar ve benzerleri de dahil olmak üzere ortaya çıkan sorunların işaretleri olabilir.

2) Sabit sayıları izleyin. Sıkıştırmayı aşarsanız SSTable sayıları artacaktır (her sstable tam olarak bir kez yazılır - silme işlemleri, eski sstable'ları sıkıştırma yoluyla yeni sstables'lara birleştirerek işlenir).

3) Düğüm durumu değişikliklerini izleyin (yukarı / aşağı, vb.). Düğümlerin çırpıldığını görürseniz, normal olmadığı için araştırın.

4) Disk kullanımınızı takip edin - geleneksel olarak% 50'nin altında kalmanız gerekir (özellikle STCS sıkıştırması kullanıyorsanız).

Düzenli olarak yapmanız ve yapmamanız gereken bazı temel şeyler vardır:

1) Açıkça çalıştırmayın nodetool compact. Bunu yaptığınızı söylüyorsunuz, bu ölümcül değil, ancak çok büyük sstables oluşturuyor ve bu da ileriye doğru sıkıştırmaya katılma olasılığı daha düşük. Çalıştırmaya devam etmeniz gerekmez, ancak bazen silinen / üzerine yazılan verilerden kurtulmanıza yardımcı olabilir.

2) nodetool repairgenellikle her önerilir gc_grace_seconds(varsayılan olarak 10 gün). Bunun daha az önemli olduğu iş yükleri vardır - onarım GEREKTİRMENİN en büyük nedeni, silme işaretleyicilerinin ( tombstones) sürelerinin dolmasından önce iletildiğinden emin olmaktır (silme gerçekleştiğinde gc_grace_secondsbir düğüm kapalıysa, bu veriler geri dönebilir) onarım olmadan!). Silme işlemlerini gerçekleştirmezseniz ve yeterli tutarlılık düzeyiyle (örneğin QUORUM'da okur ve yazar) sorgu yaparsanız, tamirat olmadan bir hayat yaşayabilirsiniz.

3) Onarım yapacaksanız, artımlı onarım kullanmayı düşünün ve her seferinde küçük aralıkları onarın.

4) Sıkıştırma stratejileri önemlidir - çok fazla. STCS yazma için harika, LCS okuma için harika. DTCS'nin bazı tuhaflıkları var.

5) Veri modelleri önemlidir - RDBMS / SQL ortamları gibi, unindexed sorgular büyük tablolara çarptığında sorun yaşar gibi, Cassandra çok büyük satırlar / bölümler ile sorunlu olabilir.

6) Anlık görüntüler ucuzdur. Çok ucuz. Neredeyse anında, sadece sabit bağlantılar, hemen hemen hiçbir disk alanına mal olmazlar. Sürümleri, özellikle büyük sürümleri yükseltmeden önce anlık görüntüyü kullanın.

7) Silme işlemlerine dikkat edin. # 2'de ima edildiği gibi, delete diskte daha fazla veri oluşturur ve AT LEAST için serbest bırakmaz gc_grace_seconds.

Diğer her şey başarısız olduğunda:

Prod'daki Cassandra'nın herhangi bir büyüklükteki kümeyi yönetmek için özel bir kafa gerektirdiğini öneren makaleler gördüm - bunun mutlaka doğru olduğunu bilmiyorum, ancak endişeleniyorsanız, bir üçüncü taraf danışmanı (TheLastPickle, Pythian) kiralamak isteyebilirsiniz ) veya içinizin rahat etmesi için bir destek sözleşmesi (Datastax) almanız gerekir.


1
Jeff gecikti, biraz uyku tomurcuğu alın!
Aaron

1
Dostum, bununla ilgili tarihi fark etmedim. Gerçekten gecikti, değil mi?
Jeff Jirsa

2

Göre Cassandra onarım belgeleri , nodetool repairaşağıdaki durumlarda çalıştırılmalıdır:

  • En iyi uygulama olarak, onarımları haftalık olarak planlamanız gerekir. Not: Silme işlemi asla gerçekleşmezse, düzenli onarımlar planlamanız gerekir. Bir sütunu null değerine ayarlamanın bir silme olduğunu unutmayın.
  • Düğüm kurtarma sırasında. Örneğin, bir düğümden sonra bir düğümü kümeye geri getirirken.
  • Sık okunmayan veriler içeren düğümlerde.
  • Kapatılmış bir düğümdeki verileri güncellemek için.

Okuma / yazma yüklerinin depoda parçalanmaya neden olduğunu düşünmeliyim.

Cassandra'daki veriler sizin düşündüğünüz şekilde “parçalanmaz”. Ancak, silmeler mezar taşlarının yerleşimini tetikler ve normal kompakt işlem mezar taşlarını ortadan kaldırır.

Sıkıştırmanın büyük bir anlaşma olduğunu ve otomatik olarak çalıştığını anlıyorum

Doğru. Bir DataStax temsilcisi tarafından compactmanuel olarak çalıştırdığınızda, her zaman manuel olarak çalıştırmanız gerektiği söylendi . Bunun nedeni, sıkıştırma işleminin bir anahtar alanındaki tüm SSTABLES'ların tek bir SSTABLE dosyasına "sıkıştırılması" ile çalışmasıdır. Bu SSTABLE dosyasında küçük olan ve sıkıştırma eşiğinin ötesine geçmesi çok uzun sürecek bazı sütun aileleriniz olabilir, otomatik sıkıştırma işleminin tekrar çalışması olasılığı çok düşüktür.

Temel olarak, düzenli bir planlama yaptığınızdan nodetool repair, asla çalıştırılmadığınızdan nodetool compactve bir yedekleme stratejisi uyguladığınızdan emin olun (anlık görüntüler, artımlı yedeklemeler veya her ikisi).


Peki, eğer nodetool compactkoşarsam, kümemi boğmazsam sonsuza kadar mahkum olur muyum? Yoksa tekrar çalışmaya başlamak için otomatik sıkıştırmanın bir yolu var mı?
2rs2ts

1
@ 2rs2ts "Sonsuza dek" için değil. Manuel bir sıkıştırma yaptığınızda ... "evet", düzenli aralıklarla çalıştırmaya devam etmeniz gerekir (bunu her zaman haftalık onarımımızdan hemen sonra yaparız). Bir DataStax temsilcisi ile bu netleştirin ama bence sizin (çalıştırmak yükseltme gibi SSTABLE dosyalarını yeniden yazar bir olayı varsa upgradesstables) olabilir kurtaracak kadar şeyleri reset "el sıkıştırma cehenneme."
Aaron

Teşekkürler, sanırım mantıklı. Talihsiz.
2rs2ts

1
Otomatik sıkıştırma eninde sonunda doğal olarak kompakt hale getirecek kadar büyük sstables oluşturacaktır nodetool compact. Ayrıca, şimdi doğal olmayan büyük sstable kurtulmak için sstablesplit kullanabilirsiniz, böylece "geri alabilirsiniz" nodetool compact.
Jeff Jirsa
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.