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

अपाचे HBase प्रतिकृति अवलोकन

Apache HBase प्रतिकृति एक HBase क्लस्टर से डेटा को एक अलग और संभवतः दूर के HBase क्लस्टर में कॉपी करने का एक तरीका है। यह इस सिद्धांत पर काम करता है कि मूल क्लस्टर से लेनदेन को दूसरे क्लस्टर में धकेल दिया जाता है। HBase शब्दजाल में, पुश करने वाले क्लस्टर को मास्टर कहा जाता है, और लेनदेन प्राप्त करने वाले को दास कहा जाता है। लेन-देन का यह धक्का अतुल्यकालिक रूप से किया जाता है, और ये लेनदेन एक विन्यास योग्य आकार में बैच किए जाते हैं (डिफ़ॉल्ट 64MB है)। एसिंक्रोनस मोड मास्टर पर न्यूनतम ओवरहेड लेता है, और एक बैच में शिपिंग संपादन समग्र थ्रूपुट को बढ़ाता है।

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

मामलों का उपयोग करें

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

एक अन्य प्रतिकृति उपयोग मामला तब होता है जब कोई उपयोगकर्ता अपने HBase क्लस्टर पर लोड गहन MapReduce कार्य चलाना चाहता है; मास्टर क्लस्टर पर थोड़ा सा प्रदर्शन कम करते हुए कोई भी दास क्लस्टर पर ऐसा कर सकता है।

वास्तुकला

HBase प्रतिकृति का मूल सिद्धांत मास्टर से दास तक सभी लेनदेन को फिर से खेलना है। यह मास्टर क्लस्टर से WAL (राइट अहेड लॉग) में WALEdits (आगे की लॉग प्रविष्टियाँ लिखें) को फिर से चलाकर किया जाता है, जैसा कि अगले भाग में वर्णित है। इन WALEdits को स्लेव क्लस्टर क्षेत्र सर्वर को फ़िल्टर करने के बाद भेजा जाता है (चाहे कोई विशिष्ट संपादन प्रतिकृति के लिए स्कोप किया गया हो या नहीं) और अनुकूलित बैच आकार में शिपिंग (डिफ़ॉल्ट 64MB है)। यदि वाल रीडर वर्तमान वाल के अंत तक पहुँच जाता है, तो यह तब तक जो भी WALEdits पढ़ा गया है उसे शिप करेगा। चूंकि यह प्रतिकृति का एक अतुल्यकालिक मोड है, स्लेव क्लस्टर मिनटों के क्रम में मास्टर से एक भारी आवेदन में पिछड़ सकता है।

WAL/WALEdits/Memstore

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

IncrementColumnValue, एक CAS (चेक और सब्स्टीट्यूट) ऑपरेशन, WAL को लिखे जाने पर पुट में भी बदल जाता है।

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

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

काम करने के लिए प्रतिकृति के लिए, WALs को लिखना सक्षम होना चाहिए।

ClusterId

प्रत्येक HBase क्लस्टर में एक क्लस्टर आईडी होता है, एक UUID प्रकार HBase द्वारा स्वतः उत्पन्न होता है। इसे अंतर्निहित फाइल सिस्टम (आमतौर पर एचडीएफएस) में रखा जाता है ताकि यह पुनरारंभ के बीच परिवर्तित न हो। इसे /hbase/hbaseid znode के अंदर संग्रहीत किया जाता है। इस आईडी का उपयोग मास्टर-मास्टर/एसाइक्लिक प्रतिकृति को प्राप्त करने के लिए किया जाता है। WAL में कई क्षेत्रों के लिए प्रविष्टियाँ होती हैं जो रीजनसर्वर पर होस्ट की जाती हैं। प्रतिकृति कोड सभी कीवैल्यू को पढ़ता है और उन कीवैल्यू को फ़िल्टर करता है जो प्रतिकृति के लिए स्कोप हैं। यह कीवैल्यू के कॉलम फैमिली एट्रिब्यूट को देखकर और इसे WALEdit के कॉलम फैमिली मैप डेटा स्ट्रक्चर से मैच करके करता है। उस स्थिति में जब एक विशिष्ट कीवैल्यू को प्रतिकृति के लिए स्कोप किया जाता है, तो यह कीवैल्यू के क्लस्टर आईडी पैरामीटर को एचबेस क्लस्टर आईडी में संपादित करता है।

प्रतिकृति स्रोत

प्रतिकृति स्रोत क्षेत्र सर्वर प्रक्रिया में एक जावा थ्रेड ऑब्जेक्ट है और एक विशिष्ट दास क्लस्टर में वाल प्रविष्टियों को दोहराने के लिए जिम्मेदार है। इसमें एक प्राथमिकता कतार है जिसमें लॉग फाइलें होती हैं जिन्हें दोहराया जाना है। जैसे ही एक लॉग संसाधित होता है, इसे कतार से हटा दिया जाता है। प्राथमिकता कतार एक तुलनित्र का उपयोग करती है जो उनके निर्माण टाइमस्टैम्प के आधार पर लॉग फ़ाइलों की तुलना करती है, (जो लॉग फ़ाइल नाम से जुड़ी होती है); इसलिए, लॉग को उसी क्रम में संसाधित किया जाता है जैसे उनके निर्माण समय (पुराने लॉग को पहले संसाधित किया जाता है)। यदि प्राथमिकता कतार में केवल एक लॉग फ़ाइल है, तो इसे हटाया नहीं जाएगा क्योंकि यह वर्तमान WAL का प्रतिनिधित्व करता है।

ज़ूकीपर की भूमिका

ज़ूकीपर HBase प्रतिकृति में एक महत्वपूर्ण भूमिका निभाता है, जहाँ यह लगभग सभी प्रमुख प्रतिकृति गतिविधि का प्रबंधन / समन्वय करता है, जैसे कि एक दास क्लस्टर को पंजीकृत करना, प्रतिकृति शुरू करना / रोकना, नए WAL को संलग्न करना, क्षेत्र सर्वर विफलता को संभालना, आदि। यह एक स्वस्थ होने की सलाह दी जाती है ज़ूकीपर कोरम (कम से कम 3 या अधिक नोड्स) ताकि इसे हर समय चालू रखा जा सके। ज़ुकीपर को स्वतंत्र रूप से चलाया जाना चाहिए (और HBase द्वारा नहीं)। निम्नलिखित आंकड़ा मास्टर क्लस्टर में प्रतिकृति संबंधित znode संरचना का एक नमूना दिखाता है (कोलन के बाद का पाठ डेटा है) ज़नोड का):

/hbase/hbaseid: b53f7ec6-ed8a-4227-b088-fd6552bd6a68
….
/hbase/rs/foo1.bar.com,40020,1339435481742:
/hbase/rs/foo2.bar.com,40020,1339435481973:
/hbase/rs/foo3.bar.com,40020,1339435486713:
/hbase/replication:
/hbase/replication/state: true
/hbase/replication/peers:
/hbase/replication/peers/1: zk.quorum.slave:281:/hbase
/hbase/replication/rs:
/hbase/replication/rs/foo1.bar.com.com,40020,1339435084846:
/hbase/replication/rs/foo1.bar.com,40020,1339435481973/1:
/hbase/replication/rs/foo1.bar.com,40020,1339435481973/1/foo1.bar.com.1339435485769: 1243232
/hbase/replication/rs/foo3.bar.com,40020,1339435481742:
/hbase/replication/rs/foo3.bar.com,40020,1339435481742/1:
/hbase/replication/rs/foo3.bar.com,40020,1339435481742/1/foo3.bar..com.1339435485769: 1243232
/hbase/replication/rs/foo2.bar.com,40020,1339435089550:
/hbase/replication/rs/foo2.bar.com,40020,1339435481742/1:
/hbase/replication/rs/foo2.bar.com,40020,1339435481742/1/foo2.bar..com.13394354343443: 1909033

            चित्र 1. प्रतिकृति znodes पदानुक्रम

चित्र 1 के अनुसार, मास्टर क्लस्टर में तीन रीजनसर्वर हैं, अर्थात् foo[1-3].bar.com। प्रतिकृति से संबंधित तीन ज़ोनोड हैं:

  1. राज्य :यह znode बताता है कि प्रतिकृति सक्षम है या नहीं। सभी मूलभूत चरण (जैसे कि क्या प्रतिकृति कतार में एक नए रोल किए गए लॉग को संलग्न करना है, WALEdits शिपमेंट करने के लिए एक लॉग फ़ाइल पढ़ें, आदि), प्रसंस्करण से पहले इस बूलियन मान की जांच करें। इसे hbase-conf.xml में "hbase.replication" प्रॉपर्टी को सही पर सेट करके सेट किया जाता है। इसके मान को बदलने का एक अन्य तरीका hbase शेल में "प्रारंभ/रोक प्रतिकृति" कमांड का उपयोग करना है। इस पर दूसरे ब्लॉगपोस्ट में चर्चा की जाएगी।
  2. साथी :इस ज़नोड में बच्चों के रूप में जुड़े हुए साथी/दास हैं। चित्र में, पीरआईड =1 के साथ एक दास है, और इसका मूल्य कनेक्शन स्ट्रिंग (ज़ूकीपर_कोरम_ऑफ_स्लेव:ज़ूकीपर_क्लाइंट_पोर्ट:रूट_हबेस_ज़नोड) है, जहां ज़ूकीपर_कोरम_ऑफ_स्लेव ज़ूकीपर सर्वरों की अल्पविराम से अलग सूची है। पीअरआईड ज़्नोड नाम वही है जो पीयर जोड़ते समय दिया गया था।
  3. रुपये :इस ज़नोड में मास्टर क्लस्टर में सक्रिय क्षेत्र सर्वरों की एक सूची है। प्रत्येक रीजनसर्वर ज़नोड में वाल की एक सूची होती है जिसे दोहराया जाना है, और इन लॉग ज़ोनोड का मान या तो शून्य है (यदि लॉग अभी तक प्रतिकृति के लिए नहीं खोला गया है), या बाइट उस बिंदु पर ऑफसेट है जहां लॉग पढ़ा गया है। WAL znode के लिए बाइट ऑफ़सेट मान संबंधित WAL फ़ाइल के बाइट ऑफ़सेट को इंगित करता है जिस तक इसे पढ़ा और दोहराया गया है। चूंकि एक से अधिक दास क्लस्टर हो सकते हैं, और प्रतिकृति प्रगति उनके बीच भिन्न हो सकती है (उदाहरण के लिए एक नीचे हो सकता है), सभी वाल स्वयं आरएस के तहत एक पीरआईड ज़्नोड में निहित हैं। इस प्रकार, उपरोक्त आंकड़े में, WALs znodes /rs//1 के अंतर्गत हैं, जहां "1" पीअरआईड है।

प्रतिकृति मोड

HBase प्रतिकृति स्थापित करने के तीन तरीके हैं:

  1. मास्टर-स्लेव:इस मोड में, प्रतिकृति एक ही दिशा में की जाती है, यानी, एक क्लस्टर से लेनदेन को दूसरे क्लस्टर में धकेल दिया जाता है। ध्यान दें कि स्लेव क्लस्टर किसी भी अन्य क्लस्टर की तरह है, और इसकी अपनी टेबल, ट्रैफ़िक आदि हो सकते हैं।
  2. मास्टर-मास्टर:इस मोड में, प्रतिकृति को दोनों दिशाओं में, अलग-अलग या समान तालिकाओं के लिए भेजा जाता है, अर्थात, दोनों क्लस्टर मास्टर और गुलाम दोनों के रूप में कार्य कर रहे हैं। इस मामले में कि वे एक ही तालिका की नकल कर रहे हैं, कोई सोच सकता है कि यह कभी न खत्म होने वाले लूप की ओर ले जा सकता है, लेकिन मूल क्लस्टर के क्लस्टर आईडी पर एक म्यूटेशन (पुट/डिलीट) के क्लस्टर आईडी को सेट करके इसे टाला जाता है। चित्र 2 दो समूहों, अर्थात् सूर्य और पृथ्वी का उपयोग करके इसे स्पष्ट करता है। चित्र 2 में, हमारे पास दो HBase समूहों का प्रतिनिधित्व करने वाले दो ब्लॉक हैं। उनके पास क्रमशः क्लस्टर आईडी 100 और 200 है। प्रत्येक क्लस्टर में प्रतिकृति स्रोत का एक उदाहरण होता है, जो उस दास क्लस्टर के अनुरूप होता है जिसे वह दोहराना चाहता है; यह दोनों समूहों के क्लस्टर #Ids जानता है।

                चित्र 2. सूर्य और पृथ्वी, दो HBase क्लस्टर

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

  3. चक्रीय:इस मोड में, दो से अधिक HBase क्लस्टर हैं जो प्रतिकृति सेटअप में भाग ले रहे हैं, और एक में मास्टर-स्लेव और मास्टर-मास्टर के विभिन्न संभावित संयोजन किसी भी दो क्लस्टर के बीच स्थापित हो सकते हैं। उपरोक्त दो मामलों में उन मामलों को अच्छी तरह से शामिल किया गया है; एक कोने की स्थिति तब होती है जब हमने एक चक्र स्थापित किया है

    चित्र 3. एक गोलाकार प्रतिकृति सेट अप

चित्र 3. एक गोलाकार प्रतिकृति सेटअप दिखाता है, जहां क्लस्टर#सूर्य क्लस्टर#अर्थ की प्रतिकृति बना रहा है, क्लस्टर#अर्थ क्लस्टर#वीनस की प्रतिकृति बना रहा है, और क्लस्टर#वीनस क्लस्टर#सूर्य की प्रतिकृति बना रहा है।
मान लें कि क्लस्टर#सूर्य एक नया उत्परिवर्तन M प्राप्त करता है और उपरोक्त सभी समूहों में प्रतिकृति के लिए गुंजाइश है। मास्टर मास्टर प्रतिकृति में ऊपर बताए अनुसार इसे क्लस्टर#अर्थ में दोहराया जाएगा। क्लस्टर#अर्थ, ReplicationSrc-V पर प्रतिकृति स्रोत उदाहरण, WAL को पढ़ेगा और उत्परिवर्तन को देखेगा और इसे क्लस्टर#Venus पर दोहराएगा। उत्परिवर्तन का क्लस्टर#आईडी बरकरार रखा जाता है (क्लस्टर#सूर्य के रूप में), क्लस्टर#शुक्र पर। इस क्लस्टर में, क्लस्टर#सन, रेप्लिकेशंसएसआरसी-एस के लिए प्रतिकृति स्रोत इंस्टेंस, देखेगा कि म्यूटेशन में एक ही क्लस्टर आईडी है जो इसके स्लेवक्लस्टर# (क्लस्टर#सन के रूप में) है, और इसलिए, इसे दोहराने से छोड़ दें।

निष्कर्ष

HBase प्रतिकृति शक्तिशाली कार्यक्षमता है जिसका उपयोग आपदा पुनर्प्राप्ति परिदृश्य में किया जा सकता है। इसे 0.90 रिलीज़ में एक पूर्वावलोकन सुविधा के रूप में जोड़ा गया था, और सामान्य रूप से HBase के साथ विकसित हो रहा है, जिसमें मास्टर-मास्टर प्रतिकृति, एसाइक्लिक प्रतिकृति (दोनों को 0.92 में जोड़ा गया), और सहकर्मी स्तर पर प्रतिकृति को सक्षम-अक्षम करने जैसी कार्यक्षमता शामिल है। (0.94 में जोड़ा गया)।

अगले ब्लॉगपोस्ट में, हम विभिन्न परिचालन विशेषताओं जैसे कि कॉन्फ़िगरेशन, आदि, और HBase प्रतिकृति के साथ अन्य गोचा पर चर्चा करेंगे।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. HBase क्षेत्रों का विलय

  2. HBase में बैकअप और डिजास्टर रिकवरी के लिए दृष्टिकोण

  3. Cloudera खोज और HBase का उपयोग करके ईमेल अनुक्रमणिका

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

  5. स्पार्क HBase कनेक्टर - समीक्षा में एक वर्ष