2015-01-15 4 views
18

मैं तीन नोड्स, जिनमें से दो कर रहे हैं के साथ एक कैसेंड्रा क्लस्टर की है। वे सभी एक ही डीसी में हैं। जब मेरा जावा एप्लिकेशन क्लस्टर पर लिखने के लिए जाता है, तो मुझे अपने एप्लिकेशन में एक त्रुटि मिलती है जो कैसंड्रा के साथ कुछ समस्या के कारण होती है:पर्याप्त नहीं प्रतिकृति (लेकिन 1 आवश्यक केवल 0 जिंदा) स्थिरता एक पर क्वेरी के लिए उपलब्ध

कारण: com.datastax.driver.core.exceptions.UnavailableException: पर्याप्त नहीं प्रतिकृति स्थिरता एक पर क्वेरी के लिए उपलब्ध (1 आवश्यक है, लेकिन केवल 0 जिंदा) com.datastax.driver.core.exceptions.UnavailableException.copy (UnavailableException.java:79) पर

बात यह है कि भावना है नहीं है कि "1 आवश्यक लेकिन केवल 0 जिंदा" कथन। दो नोड्स हैं, जिसका मतलब है कि प्रतिकृति के लिए एक "जीवित" होना चाहिए।

या मैं त्रुटि संदेश गलत समझ रहा हूँ?

धन्यवाद।

उत्तर

22

तालिका आप जानना चाहते हैं अंतर्गत आता है क्योंकि keyspace की प्रतिकृति फैक्टर एक की एक प्रतिकृति फैक्टर है करने के लिए आप की संभावना इस त्रुटि हो रही है, यह सही है?

विभाजन आप पढ़ रहे हैं/अद्यतन करने के लिए पर्याप्त उपलब्ध प्रतिकृतियां (डेटा के साथ नोड्स) स्थिरता के स्तर को पूरा करने की जरूरत नहीं होती है, तो आपको यह त्रुटि मिल जाएगा।

आप एक से अधिक 1 नोड अनुपलब्ध जा रहा है संभाल करने में सक्षम होना चाहते हैं, तो क्या तुम कर सकते हो एक उच्च प्रतिकृति कारक, तीन इस मामले में स्थापित करने के लिए अधिमानतः altering your keyspace पर गौर करें, और फिर प्राप्त करने के लिए प्रत्येक नोड पर एक nodetool repair चल रहा है सभी नोड्स पर आपका सभी डेटा। इस परिवर्तन के साथ, आप एक के स्थिरता स्तर पर पढ़ने के लिए 2 नोड्स के नुकसान से बचने में सक्षम होंगे।

This cassandra parameters calculator नोड गिनती, प्रतिकृति कारक, और स्थिरता के स्तर के विचार को समझने के लिए एक अच्छा संदर्भ है।

+0

धन्यवाद। हां, यह सही है, इसमें एक का प्रतिकृति कारक है। लेकिन मुझे समझ में नहीं आता कि मेरे पास एक माध्यमिक नोड था जो ऊपर था। तो: एक मुख्य नोड और एक नोड जो इसे दोहराने में सक्षम था। मेरे मामले में, तीन नोड्स में से केवल एक उपलब्ध नहीं था। – user3712321

+3

1 का एक प्रतिकृति कारक का अर्थ है डेटा की प्रत्येक पंक्ति के लिए केवल 1 प्रतिकृति है। तो यदि आपके पास 1 नोड डाउन है और 1 का आरएफ है, तो इसका मतलब है कि उस नोड पर मौजूद सभी डेटा अब अनुपलब्ध है। देखें: http://www.datastax.com/documentation/cassandra/2.0/cassandra/architecture/architectureDataDistributeReplication_c.html –

+0

धन्यवाद। वह कैलकुलेटर जिसने आपको एक लिंक पोस्ट किया है वह बहुत उपयोगी है। – user3712321

2

मैं आज मारा क्योंकि डेटासेंटर खाना केस संवेदी है। अपने डीसी 'somedc01' है, तो यह काम करने के लिए नहीं जा रहा है:

replication = 
    { 
     'class': 'NetworkTopologyStrategy', 
     'SOMEDC01': '3' # <-- BOOM! 
    } 
    AND durable_writes = true; 

वैसे भी, यह है कि सहज नहीं है, उम्मीद है कि इस मदद करता है।

+1

इससे मेरी मदद की। मेरे पास एकल नोड कॉन्फ़िगरेशन है और त्रुटि विषय में समान थी। – prot

0

मेरे मामले में, मुझे एक संदेश 0 उपलब्ध मिला, लेकिन कैसंड्रा ऊपर था और सीक्लश सही तरीके से काम कर रहा था, समस्या जावा से पहुंच रही थी: क्वेरी पूरी तालिका के लिए थी, और कुछ रिकॉर्ड एक्सेसिबल नहीं थे (सभी नोड्स उन्हें नीचे रखते हैं)। Cqlsh से, तालिका कार्यों से * चुनें, केवल accesible रिकॉर्ड दिखाता है। तो, समाधान के साथ नोड्स नीचे ठीक करने के लिए, और शायद बदलने के लिए प्रतिकृति कारकों है:

ALTER KEYSPACE .... 
nodetool repair -all 

तो स्थिति nodetool देखने के लिए परिवर्तन और क्लस्टर संरचना

संबंधित मुद्दे