2011-07-21 7 views
7

का एक अलग समूह में आकार एन के कैसेंड्रा समूह से डेटा को स्थानांतरित करना .. एक 5 नोड क्लस्टर से 7 नोड क्लस्टर तक।मैं कैसे यह पता लगाने की एक कैसेंड्रा क्लस्टर से डेटा माइग्रेट करने के लिए कैसे, एक अलग अंगूठी आकार का एक और कैसेंड्रा क्लस्टर के लिए कोशिश कर रहा हूँ आकार एन +/- एम

मैं sstable2json पर तलाश शुरू कर दी है, क्योंकि यह है कि विशिष्ट कैसेंड्रा नोड पर SSTable के लिए एक json फ़ाइल बनाता है। मेरा विचार अंगूठी में प्रत्येक नोड पर कॉलम परिवार के लिए ऐसा करना था। तो 5 नोड रिंग पर, यह मुझे 5 जेसन फाइलें देगा, कॉलम परिवार में संग्रहीत डेटा के लिए एक फ़ाइल जो प्रत्येक नोड पर रहता है।

फिर मैं जेसन फाइलों को एक फ़ाइल में विलय कर दूंगा, और आकार के नए क्लस्टर में आयात करने के लिए जेसन 2 एसस्टेबल का उपयोग करूंगा, मैं कहूंगा। मैं उम्मीद कर रहा था कि कैसंड्रा फिर नोड्स में समान रूप से डेटा को दोहराएगा अंगूठी में, लेकिन मैंने अभी पढ़ा है कि एसएसटीबल्स एक बार लिखे गए अपरिवर्तनीय हैं। तो अगर मैंने जो कुछ किया है, मैंने किया है, तो मैं अपने कॉलम परिवार के सभी डेटा के साथ एक नोड पर एक अंगूठी के साथ समाप्त होता हूं।

तो किसी को भी मुझे एक अलग अंगूठी आकार का एक अलग क्लस्टर के लिए एक समूह से डेटा को माइग्रेट करने के लिए प्रक्रिया यह पता लगाने में मदद कर सकते हैं?

उत्तर

9

बेहतर परिभाषित किया है: उपयोग bin/वर्ष की अंगूठी से sstables पर sstableloader, नया एक को स्ट्रीम करने के लिए।

आम तौर पर sstableloader इस तरह एक क्रम में प्रयोग किया जाता है:

  1. sstables स्थानीय स्तर पर SSTableWriter का उपयोग कर sstableloader
  2. उपयोग सही नोड्स (bin/sstableloader पथ करने वाली निर्देशिका के लिए sstables में डेटा स्ट्रीम करने के लिए बनाएं -full के- sstables)। निर्देशिका का नाम कुंजीपटल माना जाता है, जो मामला होगा यदि आप इसे मौजूदा कैसंड्रा डेटा निर्देशिका में इंगित करते हैं।

आप एक नया cluter बी के लिए एक मौजूदा क्लस्टर एक से डेटा स्ट्रीम करने के लिए देख रहे हैं के बाद से, आप का उपयोग करने पर क्लस्टर ए में प्रत्येक नोड पर डेटा के खिलाफ sstableloader चल

अधिक जानकारी के लिए सीधे छोड़ सकते हैं this blog post में sstableloader।

+0

है यदि मैं सीधे एसएसटीबल को लिखता हूं, तो क्या कैसंड्रा डेटा को अन्य नोड्स में दोहराएगा? साथ ही, अगर मैं अंगूठी में सभी नोड्स से सभी डेटा फ़ाइलों को एक फ़ोल्डर में डालता हूं, और उस पर sstableloader चलाता हूं, तो क्या मैं डुप्लिकेट डेटा के साथ समाप्त नहीं होता, क्योंकि डेटा को मूल क्लस्टर में 3 नोड्स में दोहराया गया था? – Turbo

+1

हां, आप डुप्लिकेट डेटा के साथ समाप्त हो जाएगा। कॉम्पैक्शन इसका ख्याल रखेगा, इसलिए यह कोई समस्या नहीं है। इसके अलावा: "सभी डेटा फ़ाइलों को एक फ़ोल्डर में डालने की कोई ज़रूरत नहीं है," बस इसे जगह में करें। (स्पष्टीकरण के लिए संपादित।) – jbellis

+0

हे जेबेलिस, जानकारी के लिए धन्यवाद। मुझे लगता है कि यह लेने का मार्ग है। मेरे परिदृश्य के बारे में अधिक जानकारी जोड़ने के लिए, मैं डेटा मॉडल उत्पन्न करने के लिए ec2 पर hadoop का उपयोग कर रहा हूं और इसे ec2 पर भी कैसंड्रा पर जारी रखता हूं। फिर जब मॉडल बनाया गया है, तो मैं अपने नेटवर्क पर कैसंड्रा डेटा खींच रहा हूं। मॉडल उत्पन्न करते समय मैं कुछ स्केलेबिलिटी बेनिफिट प्राप्त करने के लिए ec2 पर काफी बड़ी कैसंड्रा अंगूठी बनाउंगा। लेकिन मेरे नेटवर्क में गंतव्य अंगूठी छोटी होगी, शायद आधे से। तो मेरी योजना है कि डेटा फ़ाइलों को ec2 से नीचे अपने नेटवर्क पर खींचें और फिर डेटा आयात करें। अधिक अगली टिप्पणी ... – Turbo

-1

मैं यह कहने का प्रयास करूंगा कि यह एक समस्या का बड़ा नहीं है जैसा कि प्रतीत हो सकता है।

  1. अपने नए अंगूठी बनाएं और नया रिंग में उचित रूप से प्रति http://wiki.apache.org/cassandra/Operations#Token_selection
  2. आयात डेटा के रूप में प्रत्येक नोड के लिए टोकन परिभाषित करते हैं।
  3. अंगूठी टोकन के आधार पर ही संतुलन होगा आप http://wiki.apache.org/cassandra/Operations#Import_.2BAC8_export
+0

दो प्रश्न। जब आप नई अंगूठी में आयात डेटा कहते हैं, तो मैं यह कैसे कर सकता हूं? क्या उपकरण? क्या इससे कोई फर्क पड़ता है कि नई अंगूठी मूल अंगूठी की तुलना में एक अलग आकार है? – Turbo

+0

लिंक अब और काम नहीं करते हैं। दूसरा बिंदु अस्पष्ट और बेकार – ftrujillo

0

आपको sstable2json का उपयोग करने की आवश्यकता नहीं है। आप अंतरिक्ष आप कर सकते हैं हैं:

  1. वर्ष अंगूठी
  2. उन सब को एक साथ रखा नया सर्वर से प्रत्येक पर पर नोड्स के सभी से सभी sstables प्राप्त (नाम बदल कर किसी भी एक ही नाम है जो)
  3. नई अंगूठी में प्रत्येक नोड पर नोडेटूल क्लीनअप चलाएं और वे उस डेटा को फेंक देंगे जो उनके नहीं हैं।
+0

क्या यह काम करेगा यदि दो अंगूठियां विभिन्न आकारों के हों? कहें मूल अंगूठी 12 नोड्स है, और नई अंगूठी 5 नोड्स है? – Turbo

+0

हां। लेकिन @jbellis द्वारा उनके उत्तर में वर्णित sstableloader स्क्रिप्ट बेहतर है। वर्तमान नोड्स को स्नैपशॉट करें, फिर प्रत्येक स्नैपशॉट डीआईआर से नए क्लस्टर में sstableloader चलाएं। – Zanson

0

आप निम्न के रूप में कुछ कदम उठा सकते हैं: 1।5 नोड्स क्लस्टर्स में 7 नोड्स में शामिल हों और प्रत्येक नोड को अपनी अंगूठी टोकन के साथ सेट करें। इस समय, आपके पास 12 नोड्स वाला क्लस्टर हो सकता है। 2. चरण 1 में नए क्लस्टर से 5 नोड्स निकालें। 3. अपने नोड में 5 नोड्स को स्थानांतरित करने के बाद प्रत्येक नोड के लिए टोकन रिंग सेट करें। 4. 7 नोड्स क्लस्टर की मरम्मत।

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