HBase वास्तुकला पर अंतर्दृष्टि



यह पोस्ट HBase की चर्चा करती है और HBase आर्किटेक्चर पर जानकारी देती है। यह मास्टर, क्षेत्र सर्वर और ज़ू कीपर जैसे Hbase घटकों और उनका उपयोग करने के तरीके पर भी चर्चा करता है।

शुरुआती के लिए sas प्रोग्रामिंग ट्यूटोरियल

आज की पोस्ट में HBase आर्किटेक्चर के बारे में चर्चा करते हैं। इससे पहले कि हम HBase आर्किटेक्चर में गहराई से खुदाई करें, इससे पहले कि हम HBase की अपनी मूल बातें देखें।





HBase - मूल बातें:

HBase एक ओपन-सोर्स, NoSQL, वितरित, नॉन-रिलेशनल, वर्जन, मल्टी-डायमेंशनल, कॉलम-ओरिएंटेड स्टोर है जिसे Google BigTable के बाद मॉडलिंग किया गया है जो HDFS के शीर्ष पर चलता है। '' NoSQL '' एक व्यापक शब्द है जिसका अर्थ है कि डेटाबेस RDBMS नहीं है जो SQL को अपनी प्राथमिक भाषा के रूप में समर्थन करता है। लेकिन कई प्रकार के NoSQL डेटाबेस हैं और बर्कले DB एक स्थानीय NoSQL डेटाबेस का एक अच्छा उदाहरण है, जबकि HBase है बहुत अधिक वितरित डेटाबेस।

HBase Google BigTable की सभी सुविधाएँ प्रदान करता है। यह प्राकृतिक भाषा खोज के लिए भारी मात्रा में डेटा संसाधित करने के लिए पॉवर्स द्वारा परियोजना के रूप में शुरू हुआ। यह अपाचे के Hadoop प्रोजेक्ट के हिस्से के रूप में विकसित किया गया था और यह HDFS (Hadoop Distributed File System) के शीर्ष पर चलता है। यह बड़ी मात्रा में विरल डेटा को संग्रहीत करने के दोष-सहिष्णु तरीके प्रदान करता है। HBase 'डेटा बेस' की तुलना में वास्तव में एक 'डेटा स्टोर' है क्योंकि इसमें RDBMS में उपलब्ध सुविधाओं में से कई का अभाव है, जैसे टाइप किए गए कॉलम, सेकेंडरी इंडेक्स, ट्रिगर्स और उन्नत क्वेरी भाषाएं, आदि।



स्तंभ-उन्मुख डेटाबेस में, डेटा तालिका को डेटा की पंक्तियों के बजाय डेटा के स्तंभों के वर्गों के रूप में संग्रहीत किया जाता है। कॉलम ओरिएंटेड डेटाबेस के डेटा मॉडल में टेबल का नाम, पंक्ति की, कॉलम परिवार, कॉलम, टाइम स्टैम्प होते हैं। HBase में टेबल बनाते समय, पंक्ति कुंजियों और टाइम स्टैम्प की मदद से पंक्तियों को विशिष्ट रूप से पहचाना जाएगा। इस डेटा मॉडल में कॉलम परिवार स्थिर है जबकि कॉलम गतिशील हैं। अब हम HBase आर्किटेक्चर पर नजर डालते हैं।

HBase के लिए कब जाएं?

HBase एक अच्छा विकल्प है, जब सैकड़ों या लाखों पंक्तियाँ होती हैं। HBase का उपयोग उन स्थानों पर भी किया जा सकता है जब एक RDBMS से HBase को पोर्ट के विपरीत एक पूर्ण रीडिज़ाइन के रूप में स्थानांतरित करने पर विचार किया जाता है। दूसरे शब्दों में, HBase क्लासिक ट्रांजेक्शनल अनुप्रयोगों या यहां तक ​​कि रिलेशनल एनालिटिक्स के लिए अनुकूलित नहीं है। बड़े बैच MapReduce करते समय यह HDFS के लिए एक पूर्ण विकल्प नहीं है। तो फिर आपको HBase के लिए क्यों जाना चाहिए ?? यदि आपके आवेदन में एक चर स्कीमा है जहां प्रत्येक पंक्ति थोड़ी अलग है, तो आपको HBase को देखना चाहिए।

HBase वास्तुकला:

निम्नलिखित आंकड़ा स्पष्ट रूप से HBase वास्तुकला की व्याख्या करता है।



HBase वास्तुकला पर अंतर्दृष्टि

जावा में सॉकेट का उपयोग कैसे करें

HBase में, तीन मुख्य घटक हैं: मास्टर, क्षेत्र सर्वर और चिड़ियाघर कीपर अन्य घटक हैं मेमोरोर, एचफाइल और वाल।

जैसा कि HBase HDFS के शीर्ष पर चलता है, यह मास्टर-स्लेव आर्किटेक्चर का उपयोग करता है जिसमें HMaster मास्टर नोड होगा और क्षेत्र सर्वर दास नोड हैं। जब क्लाइंट एक लिखित अनुरोध भेजता है, तो HMaster उस अनुरोध को संबंधित क्षेत्र सर्वर को भेज देता है।

क्षेत्र सर्वर:

यह एक प्रणाली है जो डेटा नोड के समान कार्य करता है। जब क्षेत्र सर्वर (RS) लिखित अनुरोध प्राप्त करता है, तो यह अनुरोध को विशिष्ट क्षेत्र में निर्देशित करता है। प्रत्येक क्षेत्र पंक्तियों के सेट को संग्रहीत करता है। एकाधिक कॉलम परिवारों (CFs) में पंक्तियों के डेटा को अलग किया जा सकता है। विशेष CF का डेटा HStore में संग्रहीत किया जाता है, जिसमें मेमोस्टोर और HFiles का एक सेट होता है।

Memstore क्या करता है?

मेमोस्टोर उस विशेष क्षेत्र सर्वर के भीतर किए गए कार्यों को पढ़ने और लिखने के लिए सभी लॉग का ट्रैक रखता है। इससे हम कह सकते हैं कि हाडोप में नाम नोड के समान कार्य कर रहा है। मेमस्टोर एक इन-मेमोरी स्टोरेज है, इसलिए मेम्स्टोर लॉग्स को स्टोर करने के लिए प्रत्येक डेटा नोड के इन-मेमोरी स्टोरेज का उपयोग करता है। जब कुछ थ्रेसहोल्ड मिलते हैं, तो मेमोस्टोर डेटा एचएफइल में फ्लश हो जाता है।

Memstore का उपयोग करने के लिए मुख्य उद्देश्य पंक्ति कुंजी द्वारा आदेशित DFS पर डेटा संग्रहीत करने की आवश्यकता है। जैसा कि HDFS क्रमिक रीड्स / राइट्स के लिए डिज़ाइन किया गया है, बिना किसी फ़ाइल संशोधन के अनुमति नहीं है, HBase कुशलतापूर्वक डिस्क पर डेटा नहीं लिख सकता है क्योंकि यह प्राप्त किया जा रहा है: लिखित डेटा को सॉर्ट नहीं किया जाएगा (जब इनपुट सॉर्ट नहीं किया गया है) जिसका अर्थ है कि भविष्य के लिए अनुकूलित नहीं पुनः प्राप्ति। इस समस्या को हल करने के लिए, HBase बफ़र्स ने अंतिम बार मेमोरी में (मेमस्टोर में) डेटा प्राप्त किया, फ्लशिंग करने से पहले इसे 'सॉर्ट' करें, और फिर तेजी से क्रमिक लेखन का उपयोग करके एचडीएफएस को लिखें। इसलिए, HFile में क्रमबद्ध पंक्तियों की एक सूची होती है।

हर बार मेम्स्टोरोर फ्लश होता है प्रत्येक सीएफ के लिए एक एचएफाइल बनाया जाता है और लगातार फ्लश हो सकता है जिससे एचएफलेस टन बन सकता है। चूंकि पढ़ने के दौरान HBase को कई HFiles को देखना होगा, पढ़ने की गति को नुकसान हो सकता है। बहुत से एचफाइल्स को खोलने से रोकने के लिए और रीड परफॉर्मेंस बिगड़ने से बचाने के लिए, एचफाइल्स कंपैक्शन प्रोसेस का इस्तेमाल किया जाता है। HBase समय-समय पर (जब कुछ कॉन्फ़िगर करने योग्य थ्रेसहोल्ड मिलते हैं) कॉम्पैक्ट मल्टीपल छोटे HFiles को एक बड़े में। जाहिर है, मेमस्टोर द्वारा बनाई गई अधिक फाइलें, सिस्टम के लिए अधिक काम (अतिरिक्त भार)। इसके साथ जोड़ा गया है, जबकि संघनन प्रक्रिया आम तौर पर अन्य अनुरोधों की सेवा के साथ समानांतर में की जाती है और जब HBase कॉम्पैक्टिंग एचफाइल्स के साथ नहीं रख सकता है (हाँ, इसके लिए भी कॉन्फ़िगर थ्रेसहोल्ड हैं), यह फिर से RS पर लिखता है। जैसा कि हमने ऊपर चर्चा की, यह अत्यधिक अवांछनीय है।

हम यह सुनिश्चित नहीं कर सकते कि डेटा मेमोरोर में लगातार बना रहेगा। मान लें कि एक विशेष डेटानोड नीचे है। फिर उस डेटा नोड की मेमोरी पर रहने वाला डेटा खो जाएगा।

इस समस्या को दूर करने के लिए, जब मास्टर से अनुरोध आता है कि वह वाल को भी लिखे। वाल कुछ भी नहीं है आगे लिखो लॉग जो HDFS पर रहता है, एक स्थायी भंडारण है। अब हम यह सुनिश्चित कर सकते हैं कि डेटा नोड डाउन होने पर भी डेटा खो नहीं जाएगा। हमारे पास उन सभी कार्यों की प्रति है जिन्हें आप वाल में करने वाले हैं। जब डेटा नोड ऊपर होता है तो यह सभी गतिविधियों को फिर से करेगा। एक बार ऑपरेशन पूरा हो जाने के बाद, सब कुछ मेमस्टोर और वाल से बाहर निकाल दिया जाता है और एचएफइल में लिखा जाता है ताकि यह सुनिश्चित किया जा सके कि हम स्मृति से बाहर नहीं चल रहे हैं।

आइए एक सरल उदाहरण लेते हैं कि मैं पंक्ति 10 जोड़ना चाहता हूं फिर वह लिखित अनुरोध आता है, यह कहता है कि यह मेटा और वाल को सभी मेटा डेटा देता है। एक बार उस विशेष पंक्ति को मेम्स्टोर में एचफाइल में सब कुछ लिखा जाता है और वाल को बाहर निकाल दिया जाता है।

ज़ू कीपर:

HBase चिड़ियाघर कीपर के साथ एकीकृत आता है। जब मैं HBase शुरू करता हूं, चिड़ियाघर कीपर का उदाहरण भी शुरू होता है। कारण यह है कि ज़ू कीपर हमें उन सभी क्षेत्र सर्वरों पर नज़र रखने में मदद करता है जो HBase के लिए हैं। ज़ू कीपर इस बात पर नज़र रखता है कि कितने सर्वर हैं, कौन से क्षेत्र के सर्वर किस डेटा नोड से किस डेटा नोड से हैं। यह उन छोटे डेटा सेटों पर नज़र रखता है जहाँ Hadoop गायब है। यह Hadoop के शीर्ष पर ओवरहेड को कम करता है जो आपके मेटा डेटा के अधिकांश भाग पर नज़र रखता है। इसलिए HMaster वास्तव में ज़ू कीपर से संपर्क करके क्षेत्र सर्वरों का विवरण प्राप्त करता है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? उन्हें टिप्पणी अनुभाग में उल्लेख करें और हम आपके पास वापस आ जाएंगे।

वस्तुओं की सरणी बनाएँ जावा

संबंधित पोस्ट:

सहायक हाइव कमांड्स