ईसी 2 पर चलते समय, इंस्टेंस प्रकारों की बात आने पर आप अक्सर जीत नहीं सकते। उपलब्ध अधिक लागत प्रभावी प्रकारों में से एक c1.xlarge है। इसमें कॉम्पैक्शन को संभालने के लिए पर्याप्त CPU, डिस्क की एक अच्छी मात्रा और उच्च नेटवर्क I/O है। हालाँकि, हमने पाया है कि c1.xlarge पर 7GB की अपेक्षाकृत कम मेमोरी अक्सर अत्यधिक समवर्ती HBase क्लस्टर में स्थिरता के मुद्दों की ओर ले जाती है। जबकि अन्य अधिक महंगे विकल्प हैं, यह HBase ट्यूटोरियल आपको अपने c1.xlarge RegionServers का अधिकतम लाभ उठाने में मदद करेगा।
1. प्रति क्षेत्र सर्वर की संख्या कम करें
आदर्श रूप से आपके पास प्रति क्षेत्र सर्वर के 100 क्षेत्र . से कम होने चाहिए . मेमस्टोर को सभी सक्रिय क्षेत्रों द्वारा उपयोग के लिए विभाजित किया गया है, और प्रत्येक क्षेत्र एमएसएलएबी के लिए (डिफ़ॉल्ट रूप से) 2 एमबी मेमोरी जोड़ता है। इस संख्या को कम करने से चीजों को सुचारू रूप से चलाने में मदद मिलेगी, न कि केवल स्मृति के दृष्टिकोण से।
2. अन्य सेवाओं से स्मृति चोरी करें
आपको निश्चित रूप से इन इंस्टेंस प्रकारों पर अपने क्षेत्र सर्वर के साथ टास्कट्रैकर नहीं चलाना चाहिए, लेकिन आप स्थानीय डेटानोड चला रहे हैं। एक विशिष्ट कॉन्फ़िगरेशन डेटानोड के लिए 1GB मेमोरी के लिए कहता है, लेकिन हमने पाया है कि आपको बहुत सारे मामलों में इसकी आवश्यकता नहीं है। इसे रोल आउट करने से पहले अपने मेट्रिक्स को सत्यापित करें, लेकिन हम पूरी तरह से सुरक्षित थे डेटानोड हीप को 400MB तक कम करना . यह अच्छा 624MB हिस्सा HBase को थोड़ा और आगे बढ़ाने में मदद करेगा।
3. MSLAB को ट्यून या अक्षम करें
यदि मेमोरी चुराने और क्षेत्रों को काटने के बाद भी आपको समस्या हो रही है, तो आप एक कदम आगे जा सकते हैं। जैसा कि मैंने उल्लेख किया है, MSLAB सुविधा प्रत्येक क्षेत्र के लिए डिफ़ॉल्ट रूप से 2MB हीप ओवरहेड जोड़ती है। आप इस बफ़र को कम कर सकते हैं hbase.hregion.memstore.mslab.chunksize
. के साथ . जितना कम आप जाते हैं उतना कम प्रभावी होता है, लेकिन कम मेमोरी ओवरहेड भी होती है। hbase.hregion.memstore.mslab.enabled
. से इसे पूरी तरह से अक्षम कर दें ।
4. कैशिंग और बैचिंग के बारे में आक्रामक बनें
कैशिंग (Scan#setCaching(int)
) और बैचिंग (Scan#setBatch(int)
) बड़े स्कैन पर नेटवर्क विलंबता के प्रभाव को सीमित करने के लिए बेहतरीन हैं। दुर्भाग्य से उन्हें क्लाइंट और सर्वर दोनों तरफ अधिक मेमोरी की आवश्यकता होती है। स्पीड ट्रेड-ऑफ को ध्यान में रखें, लेकिन इन्हें कम करके थोड़ा और स्थिरता का आनंद लें , आवश्यकतानुसार 1 के मान के करीब।
आपके सभी समवर्ती लेखन को संभालने के लिए क्षेत्र सर्वर के पास पर्याप्त मेमोरी भी होनी चाहिए। यदि आप अपने लेखन को भारी बैचिंग कर रहे हैं, या कुछ बहुत बड़े सेल मान भेज रहे हैं, तो आप आउटऑफमेमरी अपवादों में भाग लेने की संभावना रखते हैं। अपनी बैचिंग यहां भी कम करें, या अन्यथा अपने सेल मानों के आकार को छोटा करने का तरीका खोजें।
5. Hadoop से नियंत्रण लोड करें
यदि आप अपने HBase डेटा के विरुद्ध हडूप जॉब चला रहे हैं, तो आप मूल रूप से बहुत सारे बड़े स्कैन चला रहे हैं। HBase MapReduce जॉब में, प्रत्येक क्षेत्र एक मैपर बन जाता है। यदि आपके पास प्रति क्षेत्र सर्वर 1 से अधिक क्षेत्र हैं, तो संभावना है कि आपके पास कुछ मैपर्स एक ही समय में एक ही क्षेत्र सर्वर को स्कैन कर रहे होंगे। इनमें से प्रत्येक स्कैन मेमोरी, डिस्क और सीपीयू संसाधनों को ले रहा है और जब कई बिल्ड अप होते हैं तो यह कुछ दर्द पैदा कर सकता है।
hbase.regionserver.handler.count
को कम करना मेमोरी लेने वाले सक्रिय कनेक्शन की संख्या को सीमित करने में मदद करेगा, लेकिन यदि सभी हैंडलर बड़े पूर्ण-क्षेत्र स्कैन को संभाल रहे हैं तो आपको अभी भी कोई समस्या हो सकती है। TableInputFormat के हमारे एक्सटेंशन का उपयोग करके, आप आसानी से नियंत्रित कर सकते हैं कि एक ही क्षेत्र सर्वर के विरुद्ध कितने समवर्ती मैपर चलते हैं , अधिक अनुमानित स्मृति उपयोग प्रदान करता है।
यदि आप एक रेड्यूसर से HBase को लिख रहे हैं, तो आप वहां भी विभाजन को नियंत्रित करना चाहेंगे। इसे Hadoop के Partitioner
. का उपयोग करके आसानी से लागू किया जा सकता है इंटरफ़ेस, HBase के HBaseAdmin
. के साथ क्षेत्र सर्वर मैपिंग को क्षेत्र प्रदान करने वाला इंटरफ़ेस।
HBase को कम मेमोरी पर चलाना कठिन है, लेकिन असंभव नहीं है
हाथ में इन युक्तियों के साथ, आपको अपने कम स्मृति वातावरण में जीवित संचालन के लिए अपने रास्ते पर होना चाहिए। बेहद सस्ते, तेज रैम के युग में हर मेगाबाइट मेमोरी के लिए लड़ना निराशाजनक हो सकता है। लेकिन इन युक्तियों का पालन करें और आपका सीएफओ इस लागत प्रभावी इंस्टेंस प्रकार का अधिकतम लाभ उठाने के लिए आपको धन्यवाद देगा। थोड़ी अधिक वित्तीय स्वतंत्रता वाले लोगों के लिए, हम भविष्य की पोस्ट में Amazon के नए I2 इंस्टेंस प्रकारों के प्रभाव का पता लगाएंगे . तो बने रहें!
यह लेख मूल रूप से dev.hubspot.com पर प्रकाशित हुआ था