2012-11-01 33 views
6

मैंने हाल ही में एक ऐसे मामले में भाग लिया जहां कैसंद्रा कस्टम इवेंट प्रकार प्रति कस्टम प्रकार के साथ समय आधारित घटनाओं को स्टोर करने के लिए पूरी तरह से फिट बैठता है (दूसरा समाधान इसे हडूप में सहेजना होगा और मैन्युअल रूप से बुककीपिंग करना होगा (ttls और stuff, IMHO एक बहुत जटिल विचार) या hbase पर स्विच)। प्रश्न यह है कि कैसंड्रा MapReduce समर्थन डेटास्टैक्स एंटरप्राइज़ संस्करण के बिना बॉक्स से बाहर कितना अच्छा काम करता है।कैसंड्रास मानचित्र समर्थन घटाएं

ऐसा लगता है कि वे CassandraFS में काफी निवेश किया है, लेकिन मैं अपने आप को पूछते हैं कि सामान्य सुअर CassandraLoader सक्रिय रूप से बनाए रखा है और वास्तव में मापता है (क्योंकि यह अधिक स्लाइस में पंक्तियों पर पुनरावृति करने के लिए की तुलना में कुछ भी नहीं लगता है)। क्या यह लाखों पंक्तियों के लिए काम करता है?

उत्तर

-2

क्यों नहीं hbase? टाइम्सरी डेटा के लिए Hbase अधिक उपयुक्त है। आप आसानी से बहुत छोटे समूह पर अरबों पंक्तियां डाल सकते हैं और WAL सक्षम के साथ छोटे 3 नोड क्लस्टर (50 एमबी/एस तक) प्रति सेकंड 500k पंक्तियां प्राप्त कर सकते हैं।

  1. कैसेंड्रा में आप वास्तव में (, कल्पना करें कि अरबों पंक्तियों के मामले में अपनी मरम्मत हमेशा के लिए काम करेगा) कुंजी की राशि से प्रतिबंधित: कैसेंड्रा कई खामियां है। तो आप स्कीमा तैयार करेंगे, जो आपके द्वारा 'शेड' करेगा, कहें, 1 घंटा, और वास्तविक टाइमस्टैम्प कॉलम के रूप में रखा जाएगा। लेकिन ऐसी योजना 'विशाल कॉलम' के उच्च जोखिम के कारण अच्छी तरह से स्केल नहीं करती है।
  2. अन्य समस्या - आप कैसंड्रा में डेटा की मैप्रिडस रेंज नहीं कर सकते हैं, सिवाय इसके कि आप आदेशित विभाजनकर्ता का उपयोग करते हैं, जो कि बिल्कुल भी संतुलन में असमर्थता के कारण एक विकल्प नहीं है।
+0

ऐसा इसलिए है क्योंकि मैं प्रोजेक्ट में पहले से ही कैसंड्रा का उपयोग कर रहा हूं और वास्तव में नई तकनीक पेश नहीं करना चाहता ... – Tobias

+0

अच्छा बिंदु। यदि हर समय सभी डेटा को संसाधित करना ठीक है - यह काम करना चाहिए, लेकिन यदि डेटा बढ़ेगा, तो मैं मैप्रेडस वर्कलोड स्टोरेज के लिए अधिक अनुकूलित करने के लिए पुनर्विचार करने की सलाह देता हूं। – octo

+0

यह क्या बकवास है? कई (सबसे?) कैसंद्रा क्लस्टर अरबों पंक्तियों का बहुत अच्छा समर्थन करते हैं। आप मरम्मत का जिक्र करते हैं लेकिन यह निश्चित रूप से भी वितरित किया जाता है। – jbellis

1

आप यादृच्छिक विभाजनकर्ता का उपयोग करके मानचित्र/कम कर सकते हैं लेकिन निश्चित रूप से आपको प्राप्त होने वाली कुंजियां यादृच्छिक क्रम में हैं। आप संभवत: सीएएसएंड्रा में सीएल = 1 का उपयोग करना चाहते हैं ताकि आप नक्शा करने/कम करने के दौरान हर बार 2 नोड्स से पढ़ने के लिए अनावश्यक न हों और इसे स्थानीय डेटा पढ़ना चाहिए। हालांकि मैंने पिग का उपयोग नहीं किया है।

+0

कैसंड्रा के लिए सुअर समर्थन ColumnFamilyInputFormat और -OutputFormat का उपयोग करता है। तो आप जो भी कर सकते हैं या हैडूप मानचित्र में जो भी कर सकते हैं वह काफी अच्छा है जो आप सीएनए और कैसंड्रा और पिग के साथ नहीं कर सकते हैं। –

+0

और यह वास्तव में यादृच्छिक विभाजनकर्ता का उपयोग कर तेजी से है? मुझे लगता है कि यह ऐसा कुछ करता है? http://stackoverflow.com/questions/8418448/cassandra-hector-how-to-retrieve-all-rows-of-a-column-family - मैंने एक बार 100 एमओओ पंक्ति सीएफ को मैन्युअल रूप से फिर से शुरू करने की कोशिश की और यह वास्तव में कभी शुरू नहीं हुआ इसके बाद पहली rangeslicequery भेजा। – Tobias

+0

वह लिंक नक्शा/मानचित्र के रूप में कम नहीं होता है/मैपर और रेड्यूसर या कुछ लागू करता है ... मुझे इसे जल्द से जल्द स्थापित करने की आवश्यकता है और मेरे पिछले प्रोजेक्ट से कोड नहीं है ... हाँ यह तेज़ है चूंकि उनमें से सभी समानांतर में चलते हैं ... शुरुआत हूपॉप की तरह धीमी है क्योंकि यह प्रत्येक कार्य ट्रैकर को कोड प्रदान करती है। –