2011-12-23 10 views
7

मैंने 9 नोड कैसंद्रा क्लस्टर में बहुत सारे डेटा आयात किए हैं और इससे पहले कि मैं एक और कॉलमफैमिली को और भी डेटा के साथ बनाऊं, मैं यह निर्धारित करने में सक्षम होना चाहता हूं कि वर्तमान में मेरा क्लस्टर कितना भरा है (स्मृति उपयोग के मामले में)। मुझे यकीन नहीं है कि मुझे क्या देखना है। मैं एक और 20-30 जीबी डेटा आयात नहीं करना चाहता हूं और महसूस करता हूं कि मुझे 5-6 और नोड्स जोड़ना चाहिए था।यह निर्धारित करना कि कैसंड्रा क्लस्टर कितना भरा है

संक्षेप में, मुझे नहीं पता कि मेरे पास क्लस्टर में क्या है इसके लिए अभी बहुत कम/कई नोड्स हैं।

किसी भी मदद की बहुत सराहना जाएगा :)

$ nodetool -h 192.168.1.87 ring 
Address   DC   Rack  Status State Load   Owns Token          
                       151236607520417094872610936636341427313  
192.168.1.87 datacenter1 rack1  Up  Normal 7.19 GB   11.11% 0           
192.168.1.86 datacenter1 rack1  Up  Normal 7.18 GB   11.11% 18904575940052136859076367079542678414  
192.168.1.88 datacenter1 rack1  Up  Normal 7.23 GB   11.11% 37809151880104273718152734159085356828  
192.168.1.84 datacenter1 rack1  Up  Normal 4.2 GB   11.11% 567137278201564105772291
192.168.1.85 datacenter1 rack1  Up  Normal 4.25 GB   11.11% 75618303760208547436305468318170713656  
192.168.1.82 datacenter1 rack1  Up  Normal 4.1 GB   11.11% 94522879700260684295381835397713392071  
192.168.1.89 datacenter1 rack1  Up  Normal 4.83 GB   11.11% 113427455640312821154458202477256070485  
192.168.1.51 datacenter1 rack1  Up  Normal 2.24 GB   11.11% 132332031580364958013534569556798748899  
192.168.1.25 datacenter1 rack1  Up  Normal 3.06 GB   11.11% 151236607520417094872610936636341427313 

-

# nodetool -h 192.168.1.87 cfstats 
    Keyspace: stats 
    Read Count: 232 
    Read Latency: 39.191931034482764 ms. 
    Write Count: 160678758 
    Write Latency: 0.0492021849459404 ms. 
    Pending Tasks: 0 
    Column Family: DailyStats 
    SSTable count: 5267 
    Space used (live): 7710048931 
    Space used (total): 7710048931 
    Number of Keys (estimate): 10701952 
    Memtable Columns Count: 4401 
    Memtable Data Size: 23384563 
    Memtable Switch Count: 14368 
    Read Count: 232 
    Read Latency: 29.047 ms. 
    Write Count: 160678813 
    Write Latency: 0.053 ms. 
    Pending Tasks: 0 
    Bloom Filter False Postives: 0 
    Bloom Filter False Ratio: 0.00000 
    Bloom Filter Space Used: 115533264 
    Key cache capacity: 200000 
    Key cache size: 1894 
    Key cache hit rate: 0.627906976744186 
    Row cache: disabled 
    Compacted row minimum size: 216 
    Compacted row maximum size: 42510 
    Compacted row mean size: 3453 

-

[[email protected]] describe; 
Keyspace: stats: 
    Replication Strategy: org.apache.cassandra.locator.SimpleStrategy 
    Durable Writes: true 
    Options: [replication_factor:3] 
    Column Families: 
    ColumnFamily: DailyStats (Super) 
     Key Validation Class: org.apache.cassandra.db.marshal.BytesType 
     Default column value validator: org.apache.cassandra.db.marshal.UTF8Type 
     Columns sorted by: org.apache.cassandra.db.marshal.UTF8Type/org.apache.cassandra.db.marshal.UTF8Type 
     Row cache size/save period in seconds/keys to save : 0.0/0/all 
     Row Cache Provider: org.apache.cassandra.cache.ConcurrentLinkedHashCacheProvider 
     Key cache size/save period in seconds: 200000.0/14400 
     GC grace seconds: 864000 
     Compaction min/max thresholds: 4/32 
     Read repair chance: 1.0 
     Replicate on write: true 
     Built indexes: [] 
     Column Metadata: 
     (removed) 
     Compaction Strategy: org.apache.cassandra.db.compaction.LeveledCompactionStrategy 
     Compression Options: 
     sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor 
+1

मैं वह नहीं हूं जिसने इसे कम किया है, और यह स्वयं ही एक अच्छा सवाल है, लेकिन मुझे लगता है कि डाउनवोट कैसंड्रा उपयोगकर्ता मेलिंग सूची के साथ क्रॉस-पोस्टिंग के लिए हो सकता है। –

+0

मैंने वास्तव में इसे कैसंड्रा मेलिंग सूची पर पोस्ट किया * बाद में मैंने ऊपर टिप्पणी पोस्ट की (और इस प्रकार, डाउनवोट के बाद)। – Pierre

+1

भंडारण (कैसंद्रा) के लिए कोई स्पष्ट कार्यात्मक/प्रदर्शन आवश्यकताओं, और न ही एचडब्ल्यू चश्मा सुझाव देने के लिए। –

उत्तर

10

जाहिर है, वहाँ की स्मृति में दो प्रकार के होते हैं - डिस्क और रैम। मुझे लगता है कि आप डिस्क स्पेस के बारे में बात कर रहे हैं।

सबसे पहले, आपको यह पता लगाना चाहिए कि आप वर्तमान में प्रति नोड का कितना स्थान उपयोग कर रहे हैं। इस आदेश के साथ कैसंड्रा डेटा डीआईआर (डिफ़ॉल्ट /var/lib/cassandra/data द्वारा) पर ऑन-डिस्क उपयोग की जांच करें: du -ch /var/lib/cassandra/data तब आपको इसकी डिस्क के आकार की तुलना करनी चाहिए, जो df -h के साथ मिल सकती है। केवल कॉलम पर घुड़सवार की जांच करके, df डिस्क के लिए आपके कैसंड्रा डेटा की डिस्क के लिए प्रविष्टि पर विचार करें।

उन आंकड़ों का उपयोग करके, आप कैसंड्रा डेटा विभाजन में कितना पूर्ण गणना करने में सक्षम होना चाहिए। आम तौर पर आप 100% के करीब नहीं आना चाहते हैं क्योंकि कैसंड्रा की सामान्य कॉम्पैक्शन प्रक्रियाएं अस्थायी रूप से अधिक डिस्क स्थान का उपयोग करती हैं। यदि आपके पास पर्याप्त नहीं है, तो एक नोड एक पूर्ण डिस्क के साथ पकड़ा जा सकता है, जो हल करने के लिए दर्दनाक हो सकता है (जैसा कि मैंने साइड नोट किया है, मैं कभी-कभी कुछ गिग्स की "गिट्टी" फ़ाइल रखता हूं जिसे मैं हटा सकता हूं, कुछ अतिरिक्त जगह खोलने की जरूरत है)। मैंने आमतौर पर पाया है कि 0.8 श्रृंखला के लिए सुरक्षित पक्ष पर 70% से अधिक डिस्क उपयोग नहीं है।

यदि आप कैसंड्रा का एक नया संस्करण उपयोग कर रहे हैं, तो मैं अस्थायी डिस्क उपयोग को कम करने के लिए लेवलड कॉम्पैक्शन रणनीति को एक शॉट देने की अनुशंसा करता हूं। संभावित रूप से दो बार डिस्क स्थान का उपयोग करने के बजाय, नई रणनीति अधिकतर 10x, डिफ़ॉल्ट आकार (डिफ़ॉल्ट रूप से 5 एमबी) का 10x उपयोग करेगी।

आप डेटास्टैक्स से इस उत्कृष्ट ब्लॉग पोस्ट पर अस्थायी रूप से डिस्क उपयोग को कैसे बढ़ाते हैं, इस बारे में और अधिक पढ़ सकते हैं: http://www.datastax.com/dev/blog/leveled-compaction-in-apache-cassandra यह कॉम्पैक्शन रणनीतियों को भी समझाता है।

तो थोड़ा क्षमता योजना बनाने के लिए, आप यह समझ सकते हैं कि आपको कितनी अधिक जगह चाहिए। 3 (जो आप ऊपर उपयोग कर रहे हैं) के एक प्रतिकृति कारक के साथ, 20-30 जीबी कच्चे डेटा को प्रतिलिपि के बाद 60-90 जीबी जोड़ देगा। अपने 9 नोड्स के बीच विभाजित करें, जो प्रति नोड 3 जीबी अधिक हो सकता है। क्या प्रति नोड के उस प्रकार के डिस्क उपयोग को जोड़ना आपको पूर्ण डिस्क रखने के बहुत करीब है? यदि ऐसा है, तो आप क्लस्टर में अधिक नोड जोड़ने पर विचार करना चाहेंगे।

एक अन्य नोट यह है कि आपके नोड्स का भार 2 जीबी से 7 जीबी तक भी नहीं है। यदि आप बेतरतीब ढंग से बाइटऑर्डरपार्टिशनर का उपयोग कर रहे हैं, तो इससे आपकी अंगूठी में असमान भार और "हॉटस्पॉट" हो सकता है। यदि संभव हो तो आपको यादृच्छिक उपयोग करने पर विचार करना चाहिए। दूसरी संभावना यह हो सकती है कि आपके पास अतिरिक्त डेटा लटक रहा है जिसके लिए देखभाल की जानी चाहिए (संकेतित हैंडऑफ और स्नैपशॉट्स दिमाग में आते हैं)। प्रत्येक नोड पर एक समय में nodetool repair और nodetool cleanup चलाकर इसे साफ करने पर विचार करें (उन लोगों को पहले पढ़ने के लिए सुनिश्चित करें!)।

उम्मीद है कि मदद करता है।

+0

उपयोगी टिप्स, लेकिन क्या आप उत्तर को थोड़ा अधिक पठनीय बना सकते हैं। – HeyWatchThis

+0

अधिकतम डेटा उपयोग को स्पष्ट करने के लिए। स्तरित compaction 80-90% मैक डिस्क उपयोग अधिकतम है क्योंकि sstables छोटे हैं। SizeTieredCompaction के साथ कभी भी 50% से अधिक नहीं जाता है क्योंकि एसएसटीबल इतने बड़े हो सकते हैं कि कॉम्पैक्ट करने के लिए आपको खाली स्थान पर अपने सबसे बड़े एसएसटीबल के लिए पर्याप्त जगह चाहिए। – Robert

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