HBase
 sql >> डेटाबेस >  >> NoSQL >> HBase

प्रदर्शन में सुधार के लिए MapReduce में प्रदर्शन ट्यूनिंग

Hadoop में प्रदर्शन ट्यूनिंग Hadoop क्लस्टर प्रदर्शन को अनुकूलित करने में मदद करता है। इस MapReduce प्रदर्शन ट्यूनिंग लेख में, आप सबसे पहले Hadoop क्लस्टर के प्रदर्शन को बेहतर बनाने के विभिन्न तरीकों का पता लगाएंगे और Hadoop में MapReduce प्रोग्रामिंग से सर्वोत्तम परिणाम प्राप्त करेंगे।

फिर लेख Hadoop MapReduce प्रदर्शन ट्यूनिंग के लिए सात महत्वपूर्ण तरीकों या अवधारणाओं को कवर करेगा। ये तरीके हैं Hadoop में मेमोरी ट्यूनिंग, IO प्रदर्शन में सुधार, Hadoop में मैप डिस्क स्पिल, मैपर और रेड्यूसर कार्यों को ट्यून करना, कंबाइनर लिखना, स्क्यूड जॉइन का उपयोग करना, और सट्टा निष्पादन।

कम से कम परिचालन लागत के साथ प्रदर्शन को बढ़ाने के लिए कमोडिटी हार्डवेयर के साथ उत्पादन में Hadoop क्लस्टर स्थापित करने के लिए इन तकनीकों का उपयोग किया जा सकता है।

Hadoop Map का परिचय प्रदर्शन ट्यूनिंग कम करें

उत्पादन में Hadoop क्लस्टर को स्थापित करना केवल आधी लड़ाई जीती है। Hadoop व्यवस्थापक के लिए, अधिकतम प्रदर्शन प्राप्त करने के लिए Hadoop क्लस्टर सेटअप को ट्यून करना अत्यंत महत्वपूर्ण है।

Hadoop प्रदर्शन ट्यूनिंग, Hadoop क्लस्टर प्रदर्शन को अनुकूलित करने में मदद करता है और Big Data कंपनियों में MapReduce जॉब चलाते समय सर्वोत्तम परिणाम प्राप्त करता है।

Hadoop स्थापना के दौरान, Hadoop क्लस्टर को डिफ़ॉल्ट कॉन्फ़िगरेशन सेटिंग्स के साथ कॉन्फ़िगर किया गया है।

हडूप प्रशासकों के लिए कई हार्डवेयर विनिर्देशों से परिचित होना बहुत महत्वपूर्ण है जैसे रैम क्षमता, डेटा नोड्स पर घुड़सवार डिस्क की संख्या, सीपीयू कोर की संख्या, भौतिक या आभासी कोर की संख्या, एनआईसी कार्ड इत्यादि।

जैसे, कोई एकल प्रदर्शन ट्यूनिंग तकनीक नहीं है जो सभी Hadoop नौकरियों के लिए उपयुक्त है क्योंकि बड़ी डेटा समस्या को हल करते समय सभी संसाधनों के बीच संतुलन प्राप्त करना बहुत मुश्किल है।

हम स्थानांतरित किए जाने वाले डेटा की मात्रा और उत्पादन में चलाए जाने वाले Hadoop जॉब के प्रकार के आधार पर प्रदर्शन ट्यूनिंग टिप्स और ट्रिक्स चुन सकते हैं। सबसे अच्छा और सबसे प्रभावी प्रदर्शन ट्यूनिंग अधिकतम प्रदर्शन प्राप्त करने में मदद करता है।

ऐसा करने के लिए, हमें नीचे दी गई प्रक्रिया को तब तक दोहराना होगा जब तक वांछित आउटपुट इष्टतम तरीके से प्राप्त नहीं हो जाता।

तो मूल रूप से, प्रदर्शन ट्यूनिंग के लिए, हमें पहले Hadoop MapReduce जॉब चलाना होगा, अड़चन की पहचान करनी होगी, और फिर नीचे दिए गए तरीकों का उपयोग करके समस्या का समाधान करना होगा। प्रदर्शन का वांछित स्तर प्राप्त होने तक हमें उपरोक्त चरण को दोहराना होगा।

MapReduce प्रदर्शन ट्यूनिंग के लिए युक्तियाँ और तरकीबें

Hadoop MapReduce प्रदर्शन ट्यूनिंग के लिए उपयोग किए जाने वाले तरीकों को दो श्रेणियों में वर्गीकृत किया जा सकता है। ये दो श्रेणियां हैं:

1. Hadoop रन-टाइम पैरामीटर आधारित प्रदर्शन ट्यूनिंग

2. Hadoop एप्लिकेशन-विशिष्ट प्रदर्शन ट्यूनिंग

आइए अब चर्चा करें कि हम इन दो श्रेणियों के आधार पर Hadoop क्लस्टर के प्रदर्शन को कैसे बेहतर बना सकते हैं।

<एच4>1. Hadoop रन-टाइम पैरामीटर आधारित प्रदर्शन ट्यूनिंग

यह श्रेणी Hadoop रन-टाइम मापदंडों जैसे ट्यूनिंग CPU उपयोग, मेमोरी उपयोग, डिस्क उपयोग और प्रदर्शन ट्यूनिंग के लिए नेटवर्क उपयोग को ट्यून करने से संबंधित है। इस श्रेणी में शामिल तकनीकें हैं:

ए. मेमोरी ट्यूनिंग

Hadoop जॉब के अधिकतम प्रदर्शन को सुनिश्चित करने के लिए सबसे महत्वपूर्ण कदम सर्वर पर मेमोरी उपयोग की निगरानी करके मेमोरी के लिए कॉन्फ़िगरेशन पैरामीटर को ट्यून करना है।

Hadoop में प्रत्येक MapReduce जॉब पढ़े गए विभिन्न इनपुट रिकॉर्ड, रिड्यूसर रिकॉर्ड्स की संख्या, आगे के निष्पादन के लिए पाइपलाइन किए गए रिकॉर्ड्स की संख्या, स्वैप मेमोरी, हीप साइज सेट आदि के बारे में जानकारी एकत्र करता है।

Hadoop कार्य आमतौर पर CPU द्वारा बाध्य नहीं होते हैं। तो, मुख्य चिंता स्मृति उपयोग और डिस्क स्पिल को अनुकूलित करना है।

प्रदर्शन को अधिकतम करने के लिए मेमोरी ट्यूनिंग के लिए सबसे अच्छा नियम यह सुनिश्चित करना है कि MapReduce जॉब स्वैपिंग को ट्रिगर न करें। इसका मतलब है कि स्वैपिंग को ट्रिगर किए बिना जितना हो सके उतनी मेमोरी का उपयोग करें।

Cloudera Manager, Nagios, या Ganglia जैसे सॉफ़्टवेयर का उपयोग स्वैप मेमोरी उपयोग की निगरानी के लिए किया जा सकता है।

जब भी एक विशाल स्वैप मेमोरी उपयोग होता है, तो स्मृति उपयोग को mapred.child.java.opts को कॉन्फ़िगर करके अनुकूलित किया जाना चाहिए। mapred.child.java.opts में प्रत्येक कार्य के लिए आवंटित RAM की मात्रा को कम करके संपत्ति ।

हम mapred.child.java.opts . को सेट करके कार्य के लिए मेमोरी को समायोजित कर सकते हैं से -Xmx2048M mapred-site.xml में।

<एच5>बी. मैप डिस्क स्पिल कम से कम करें

Apache Hadoop में डिस्क IO प्रदर्शन की अड़चन है। बहुत सारे पैरामीटर थे जिन्हें हम स्पिलिंग को कम करने के लिए ट्यून कर सकते हैं। हम पैरामीटर को ट्यून कर सकते हैं जैसे:

  • मैपर आउटपुट का संपीड़न
  • सुनिश्चित करें कि मैपर स्पिल बफर के लिए 70% हीप मेमोरी का उपयोग करता है।

लेकिन क्या आपको लगता है कि बार-बार छलकना वास्तव में एक अच्छा विचार है?

यह अत्यधिक सुझाव दिया जाता है कि आपको एक से अधिक बार स्पिल नहीं करना चाहिए क्योंकि यदि हम एक बार स्पिल करते हैं, तो हमें सभी डेटा को फिर से पढ़ना और फिर से लिखना होगा:आईओ 3x।

सी. ट्यूनिंग मैपर टास्क

हम मानचित्र कार्यों की संख्या को निहित रूप से निर्धारित कर सकते हैं। मैपर के लिए Hadoop प्रदर्शन ट्यूनिंग का सबसे आम और प्रभावी तरीका मैपर की मात्रा और प्रत्येक कार्य के आकार को नियंत्रित करना है।

बड़ी फ़ाइलों के साथ काम करते समय, फ्रेमवर्क फ़ाइल को छोटे टुकड़ों में विभाजित करता है ताकि मैपर इसे समानांतर में चला सके। हालाँकि, एक नए मैपर कार्य की शुरुआत में आमतौर पर कुछ सेकंड लगते हैं, जो कि एक ओवरहेड भी है और इसे कम से कम करना पड़ता है। तो उसी के लिए सुझाव हैं:

  • जेवीएम कार्य का पुन:उपयोग करें
  • नक्शा कार्यों के लिए 1 से 3 मिनट तक चलने का लक्ष्य रखें। इसलिए यदि औसत मैपर चलने का समय एक मिनट से कम है, तो mapred.min.split.size बढ़ाएं, स्लॉट में कम मैपर आवंटित करने के लिए और इस प्रकार मैपर प्रारंभ करने वाले ओवरहेड को कम करें।
  • छोटी फ़ाइलों के समूह के लिए फ़ाइल इनपुट प्रारूप को मिलाएं।
<एच4>2. Hadoop एप्लिकेशन-विशिष्ट प्रदर्शन ट्यूनिंग

इस श्रेणी में शामिल तकनीकें हैं:

ए. मैपर आउटपुट को छोटा करना

मैपर आउटपुट को कम करके, हम प्रदर्शन में सुधार कर सकते हैं क्योंकि मैपर आउटपुट डिस्क IO, नेटवर्क IO और फेरबदल चरण में मेमोरी संवेदनशीलता के प्रति बहुत संवेदनशील है। हम इसे निम्न द्वारा प्राप्त कर सकते हैं:

  • रिड्यूसर साइड के बजाय मैपर साइड पर रिकॉर्ड्स को फ़िल्टर करना।
  • MapReduce में हमारी मैपर आउटपुट कुंजी और मान बनाने के लिए न्यूनतम डेटा का उपयोग करना।
  • मैपर आउटपुट को कंप्रेस करना
<एच5>बी. बैलेंसिंग रेड्यूसर लोड हो रहा है

असंतुलित कम कार्य प्रदर्शन समस्याएँ पैदा करते हैं। कुछ रेड्यूसर मैपर से अधिकांश आउटपुट लेते हैं और अन्य रेड्यूसर की तुलना में बहुत लंबे समय तक चलते हैं। हम निम्न द्वारा रेड्यूसर लोडिंग को संतुलित कर सकते हैं:

  • पार्टिशनर क्लास में बेहतर हैश फंक्शन लागू करना।
  • एकाधिक आउटपुट का उपयोग करके कुंजियों को अलग करने के लिए प्रीप्रोसेस जॉब लिखना। फिर किसी अन्य मैप-रिड्यूस जॉब का उपयोग उन विशेष कुंजियों को संसाधित करने के लिए करें जो समस्या पैदा कर सकती हैं।
सी. Hadoop में कंबाइनर के साथ इंटरमीडिएट डेटा कम करें

इसके अलावा हम एक कॉम्बिनर लिखकर Hadoop क्लस्टर के प्रदर्शन को ट्यून कर सकते हैं। कॉम्बिनर मैपर से रेड्यूसर में स्थानांतरित किए जाने वाले डेटा की मात्रा को कम करता है। यह फायदेमंद साबित होता है क्योंकि यह नेटवर्क की भीड़ को कम करता है।

डी. सट्टा निष्पादन

जब कार्यों को पूरा करने में अधिक समय लगता है तो MapReduce नौकरियों का प्रदर्शन गंभीर रूप से प्रभावित होता है। वैकल्पिक मशीनों पर धीमे कार्यों का बैकअप लेकर इस समस्या को हल करने के लिए Hadoop में सट्टा निष्पादन सामान्य तरीका है।

हम कॉन्फ़िगरेशन पैरामीटर सेट करके सट्टा निष्पादन को सक्षम कर सकते हैं 'mapreduce.map.tasks.speculative.execution' और 'mapreduce.reduce.tasks.speculative.execution' सच करने के लिए। यह कार्य निष्पादन समय को कम करेगा।

सारांश

अंत में, हमने देखा है कि Hadoop में प्रदर्शन ट्यूनिंग Hadoop क्लस्टर प्रदर्शन को अनुकूलित करने में मदद करता है। लेख में Hadoop क्लस्टर के प्रदर्शन को ट्यून करने के लिए विभिन्न युक्तियों और युक्तियों के बारे में बताया गया है।

लेख में प्रदर्शन को अधिकतम करने के लिए कुछ बेहतरीन और सबसे प्रभावी तरकीबों पर प्रकाश डाला गया है।

हालांकि, यदि इस विषय के बारे में आपके कोई प्रश्न हैं, तो बेझिझक उन्हें टिप्पणी अनुभाग में हमारे साथ साझा करें।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hadoop - शुरुआती के लिए एक Apache Hadoop ट्यूटोरियल

  2. सीडीपी परिचालन डेटाबेस के लिए उच्च उपलब्धता (मल्टी-एजेड)

  3. अपाचे काफ्का में मजबूत संदेश क्रमांकन अपाचे एवरो का उपयोग, भाग 1

  4. ऑपरेशनल डेटाबेस एडमिनिस्ट्रेशन

  5. CDH 6.2 रिलीज़:HBase में नया क्या है?