2012-09-05 21 views
7

Bir sorunla karşılaşıyorum "me.prettyprint.hector.api.exceptions.HUnavailableException:: Tutarlılık düzeyini işlemek için yeterli çoğaltma mevcut olmayabilir." RF = 1 iken, Okuma Tutarlılık Seviyesi = 1 olduğunda ve 6 düğüm halkasında/kümedeki düğümlerden biri kapalı olduğunda. Bütün okumalarım bu istisna ile başarısız oluyor. Herhangi bir fikir? İdeal olarak, sadece aşağıya doğru olan düğümde veri arayan okur ve diğer tüm okumalar başarılı olmalı?Cassandra Kullanılabilirliği

+0

Aynı sorunu cqlsh kullanarak görüyor musunuz? Hector çok zeki olmaya ve kendi müsaitlik tespitini yapmaya çalışıyor olabilir. – jbellis

+0

Evet. CQLSH'yi de denedim aynı sorun –

cevap

4

var olabilir birkaç olasılık:

    En fazla
  • Kişisel kümede olmak için birden düğümleri gerektiren bir çok sıralı sorgu (get_range, get_indexed_slices, MultiGet veya CQL eşdeğerleri) çalıştırıyorsanız
  • dengesizdir, aşağı düğümü halkanın çoğuna sahipken; kötü bir çok-dc yapılandırması da benzer bir şey üretebilir
  • Kümeniz, bazı düğümlerin başkalarını görmediği, başlamak için iyi bir durumda değildi. Bunların hiçbiri nedeni, Hector ve cqlsh ile düzgün tutarlılık seviyesini belirterek ediyoruz çifte kontrol iseniz kümede

her düğümde karşı çalıştırdığınızda emin nodetool halka aynı çıktıyı gösterdiğinden emin olun.

3

Çoğaltma ayarlarımı yanlış yapılandırdığımda benzer bir şey gördüm, özellikle çoğaltma stratejisi adı verilen yanlış veri merkezlerine sahip oldum. DC'lerin ne olduğunu iki kez kontrol edin (NetworkTopologyStrategy'i kullandığınızı varsayarak).

Zaten düğümlerden biri bir kabuk, senin DC isimlerini bilmiyorsanız

çalıştırın:

$ nodetool -h localhost ring 
Address   DC   Rack  Status State Load   Owns Token          
                       141784319550391000000000000000000000000  
172.26.233.135 Cassandra rack1  Up  Normal 25.75 MB  16.67% 0           
172.26.233.136 Cassandra rack1  Up  Normal 26.03 MB  16.67% 28356863910078200000000000000000000000  
172.26.233.137 Cassandra rack1  Up  Normal 27.19 MB  16.67% 56713727820156400000000000000000000000  
172.26.233.138 Cassandra rack1  Up  Normal 26.78 MB  16.67% 85070591730234600000000000000000000000  
172.26.233.139 Solr  rack1  Up  Normal 24.47 MB  16.67% 113427455640313000000000000000000000000  
172.26.233.140 Solr  rack1  Up  Normal 26.66 MB  16.67% 141784319550391000000000000000000000000 
Sen iki DC'lerinin Cassandra ve Solr görebilmesi (bu DSE kümesidir)

. cassandra-cli olarak

:

use Keyspace1; 
describe; 

CLI strateji seçenekleri yazdırır:

Keyspace: Catalog: 
    Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy 
    Durable Writes: true 
    Options: [DC1:3] 
... 

Biz yanlış eşleşme var. Cassandra, DC1 ve dolayısıyla UnavailableException adlı bir veri merkezi arıyor. Çoğaltma seçeneklerini, kümedeki gerçek DC'lerle eşleştirmek için güncellemeliyiz. CLI'da, veri merkezi adlarını kullanarak anahtar alanınız için strateji seçeneklerini güncelleyin:

update keyspace Keyspace1 with strategy_options = {Cassandra:3,Solr:2}; 
+0

Benim durumumda, üretim ortamından (iki veri merkezi vardı) QA ortamına (bir veri merkezi vardı) kopyalanan cassandra şeması vardı. Şemayı bir veri merkezini belirtecek şekilde düzelttikten sonra sorun çözüldü. – zafar142003