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

Apache HBase स्नैपशॉट का परिचय, भाग 2:गहरा गोता

Apache HBase स्नैपशॉट के बारे में इस श्रृंखला के भाग 1 में, आपने सीखा कि नई स्नैपशॉट सुविधा का उपयोग कैसे करें और कार्यान्वयन के पीछे थोड़ा सिद्धांत। अब, तकनीकी विवरणों में थोड़ा और गहराई से गोता लगाने का समय है।

टेबल क्या है?

एक HBase तालिका में मेटाडेटा जानकारी का एक सेट और कुंजी/मूल्य जोड़े का एक सेट होता है:

  • तालिका जानकारी :एक मेनिफेस्ट फ़ाइल जो तालिका "सेटिंग" का वर्णन करती है, जैसे कॉलम परिवार, संपीड़न और एन्कोडिंग कोडेक, ब्लूम फ़िल्टर प्रकार, और इसी तरह।
  • क्षेत्र :तालिका "विभाजन" को क्षेत्र कहा जाता है। प्रत्येक क्षेत्र कुंजी/मानों के एक सन्निहित सेट को संभालने के लिए जिम्मेदार होता है, और उन्हें एक प्रारंभ कुंजी और समाप्ति कुंजी द्वारा परिभाषित किया जाता है।
  • वाल्स/मेमस्टोर :डिस्क पर डेटा लिखने से पहले, पुट को राइट अहेड लॉग (WAL) में लिखा जाता है और फिर मेमोरी में तब तक स्टोर किया जाता है जब तक कि मेमोरी प्रेशर डिस्क पर फ्लश को ट्रिगर नहीं कर देता। WAL विफलता पर डिस्क पर फ़्लश न किए गए पुट को पुनर्प्राप्त करने का एक आसान तरीका प्रदान करता है।
  • HFiles :किसी बिंदु पर सभी डेटा डिस्क पर फ़्लश हो जाता है; एक एचएफआईएल एचबीएएस प्रारूप है जिसमें संग्रहीत कुंजी/मान शामिल हैं। HFiles अपरिवर्तनीय हैं लेकिन संघनन या क्षेत्र हटाने पर हटाया जा सकता है।

(नोट:HBase लिखें पथ के बारे में अधिक जानने के लिए, HBase लिखें पथ ब्लॉग पोस्ट पर एक नज़र डालें।)

स्नैपशॉट क्या है?

स्नैपशॉट मेटाडेटा जानकारी का एक सेट है जो व्यवस्थापक को उस तालिका की पिछली स्थिति में वापस लाने की अनुमति देता है जिस पर इसे लिया गया है। स्नैपशॉट तालिका की प्रतिलिपि नहीं है; इसके बारे में सोचने का सबसे आसान तरीका मेटाडेटा (तालिका जानकारी और क्षेत्रों) और डेटा (एचएफआईएल, मेमस्टोर, वाल) का ट्रैक रखने के लिए संचालन के एक सेट के रूप में है। स्नैपशॉट ऑपरेशन के दौरान डेटा की कोई कॉपी शामिल नहीं होती है।

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

मास्टर और क्षेत्रीय सर्वर के बीच संचार अपाचे ज़ूकीपर के माध्यम से दो-चरण प्रतिबद्ध-जैसे लेनदेन का उपयोग करके किया जाता है। मास्टर एक ज़नोड बनाता है जिसका अर्थ है "स्नैपशॉट तैयार करें"। प्रत्येक क्षेत्र सर्वर अनुरोध को संसाधित करेगा और उस तालिका से क्षेत्रों के लिए स्नैपशॉट तैयार करेगा जिसके लिए वह जिम्मेदार है। एक बार जब वे हो जाते हैं, तो वे "मैं कर चुका हूँ" के अर्थ के साथ एक उप-नोड तैयार-अनुरोध znode में जोड़ते हैं।

एक बार जब सभी क्षेत्र सर्वर अपनी स्थिति वापस रिपोर्ट कर लेते हैं, तो मास्टर एक और ज़नोड बनाता है जिसका अर्थ है "स्नैपशॉट प्रतिबद्ध करें"; प्रत्येक क्षेत्र सर्वर स्नैपशॉट को अंतिम रूप देगा और नोड में शामिल होने से पहले की स्थिति की रिपोर्ट करेगा। एक बार जब सभी क्षेत्रीय सर्वर वापस रिपोर्ट कर देते हैं, तो मास्टर स्नैपशॉट को अंतिम रूप देगा और ऑपरेशन को पूर्ण के रूप में चिह्नित करेगा। क्षेत्र के सर्वर की विफलता की रिपोर्ट करने की स्थिति में, मास्टर एक नया ज़नोड बनाएगा जिसका उपयोग निरस्त संदेश को प्रसारित करने के लिए किया जाएगा।

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

इस कारण से, क्षेत्र सर्वर पर स्नैपशॉट लेने की प्रक्रिया प्लग करने योग्य है। वर्तमान में, केवल "फ्लश स्नैपशॉट" मौजूद है, जो स्नैपशॉट लेने से पहले फ्लश करता है और केवल पंक्ति-संगति की गारंटी देता है। भविष्य में भिन्न संगति नीतियों वाली अन्य प्रक्रियाओं को लागू किया जा सकता है।

ऑनलाइन मामले में, स्नैपशॉट लेने के लिए आवश्यक समय सबसे धीमे क्षेत्र सर्वर द्वारा स्नैपशॉट ऑपरेशन करने और मास्टर को सफलता की रिपोर्ट करने के लिए आवश्यक समय से घिरा होता है। यह ऑपरेशन आमतौर पर कुछ सेकंड के क्रम में होता है।

संग्रहीत करना

जैसा कि हमने पहले देखा, HFiles अपरिवर्तनीय हैं। यह हमें स्नैपशॉट या क्लोन संचालन के दौरान डेटा की प्रतिलिपि बनाने से बचने की अनुमति देता है, लेकिन संघनन के दौरान उन्हें हटा दिया जाता है और एक संकुचित संस्करण द्वारा प्रतिस्थापित किया जाता है। इस मामले में, यदि आपके पास एक स्नैपशॉट या क्लोन तालिका है जो उन फ़ाइलों में से किसी एक को संदर्भित कर रही है, तो उन्हें हटाने के बजाय उन्हें "संग्रह" स्थान पर ले जाया जाता है। यदि आप कोई स्नैपशॉट हटाते हैं और कोई अन्य व्यक्ति स्नैपशॉट द्वारा संदर्भित फ़ाइलों का संदर्भ नहीं दे रहा है, तो वे फ़ाइलें हटा दी जाएंगी।

टेबल्स की क्लोनिंग और पुनर्स्थापना

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

स्नैपशॉट से तालिका का क्लोन बनाएं

जब कोई व्यवस्थापक क्लोन ऑपरेशन करता है, तो स्नैपशॉट में मौजूद टेबल-स्कीमा के साथ एक नई तालिका स्नैपशॉट क्षेत्र की जानकारी में प्रारंभ/समाप्ति कुंजियों के साथ पूर्व-विभाजित बनाई जाती है। एक बार टेबल मेटाडेटा बन जाने के बाद, डेटा को कॉपी करने के बजाय, स्नैपशॉट के साथ उसी ट्रिक का उपयोग किया जाता है। चूंकि HFiles अपरिवर्तनीय हैं, केवल स्रोत फ़ाइल का एक संदर्भ बनाया जाता है; यह ऑपरेशन को डेटा प्रतियों से बचने की अनुमति देता है और क्लोन को स्रोत तालिका या स्नैपशॉट को प्रभावित किए बिना संपादित करने की अनुमति देता है। क्लोन ऑपरेशन मास्टर द्वारा किया जाता है।

स्नैपशॉट से तालिका पुनर्स्थापित करें

पुनर्स्थापना ऑपरेशन क्लोन ऑपरेशन के समान है; आप इसके बारे में तालिका को हटाने और स्नैपशॉट से क्लोन करने के बारे में सोच सकते हैं। पुनर्स्थापना कार्रवाई स्नैपशॉट में मौजूद पुराने डेटा को तालिका से किसी भी डेटा को हटाकर वापस लाती है जो स्नैपशॉट में भी नहीं है, और तालिका की स्कीमा भी स्नैपशॉट में वापस कर दी जाती है। हुड के तहत, तालिका स्थिति और स्नैपशॉट के बीच अंतर करके, स्नैपशॉट में मौजूद फ़ाइलों को हटाने और स्नैपशॉट में मौजूद संदर्भों को जोड़ने के लिए वर्तमान स्थिति में मौजूद नहीं होने पर पुनर्स्थापना लागू की जाती है। साथ ही तालिका विवरणक को स्नैपशॉट के समय तालिका "स्कीमा" को प्रतिबिंबित करने के लिए संशोधित किया गया है। पुनर्स्थापना कार्रवाई मास्टर द्वारा की जाती है और तालिका को अक्षम किया जाना चाहिए।

भविष्य

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

निष्कर्ष

HBase स्नैपशॉट नई कार्यक्षमता जोड़ते हैं जैसे ऑनलाइन स्नैपशॉट द्वारा उपयोग की जाने वाली "प्रक्रिया समन्वय", या कॉपी-ऑन-राइट स्नैपशॉट, पुनर्स्थापना, और क्लोन।

स्नैपशॉट डिस्टसीपी या कॉपीटेबल के आधार पर हस्तनिर्मित "बैकअप" और "क्लोनिंग" समाधानों का एक तेज़ और बेहतर विकल्प प्रदान करते हैं। सभी स्नैपशॉट संचालन (स्नैपशॉट, पुनर्स्थापना, क्लोन) में डेटा प्रतियां शामिल नहीं होती हैं, जिसके परिणामस्वरूप तालिका के त्वरित स्नैपशॉट और डिस्क स्थान में बचत होती है।

स्नैपशॉट को सक्षम और उपयोग करने के तरीके के बारे में अधिक जानकारी के लिए, कृपया HBase परिचालन प्रबंधन दस्तावेज़ देखें।

Matteo Bertozzi प्लेटफ़ॉर्म टीम में एक सॉफ़्टवेयर इंजीनियर और एक HBase Commiter है।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मुख्य MapReduce की विशेषताएं - MapReduce का महत्व

  2. छोटी फ़ाइलें समस्या

  3. कैसे करें:Apache HBase REST इंटरफ़ेस का उपयोग करें, भाग 1

  4. एचडीएफएस ट्यूटोरियल - शुरुआती के लिए एचडीएफएस का पूरा परिचय

  5. HBase संघनन क्या हैं?