Cloudera डेटा प्लेटफ़ॉर्म (CDP) एक आउट-ऑफ-द-बॉक्स समाधान प्रदान करता है जो Apache HBase परिनियोजन को तालिका डेटा को बचाने के लिए इसकी मुख्य दृढ़ता परत के रूप में Amazon Simple Storage Service (S3) का उपयोग करने की अनुमति देता है। Amazon S3 एक ऑब्जेक्ट स्टोर है जो भुगतान-प्रति-उपयोग लागत संरचना के साथ उच्च स्तर की स्थायित्व प्रदान करता है। S3 को चलाने या प्रबंधित करने के लिए कोई सर्वर-साइड घटक नहीं है - केवल S3 क्लाइंट लाइब्रेरी और AWS क्रेडेंशियल की आवश्यकता है। हालाँकि, HBase को एक सुसंगत और परमाणु फाइल सिस्टम की आवश्यकता होती है, जिसका अर्थ है कि यह सीधे S3 का उपयोग नहीं कर सकता है क्योंकि यह अंततः एक सुसंगत ऑब्जेक्ट स्टोर है। CDH और HDP दोनों ने केवल HBase को केवल HDFS का उपयोग करके प्रदान किया है क्योंकि लंबे समय से बाधाएँ हैं जो HBase को S3 का मूल रूप से उपयोग करने से रोकती हैं। इन मुद्दों को हल करने के लिए, हमने एक आउट-ऑफ-द-बॉक्स समाधान बनाया है जिसे हम पहली बार सीडीपी के माध्यम से वितरित कर रहे हैं। जब आप CDP पर एक ऑपरेशनल डेटाबेस (HBase) क्लस्टर लॉन्च करते हैं, HBase StoreFiles (HBase टेबल के लिए बैकिंग फ़ाइलें) S3 में स्टोर की जाती हैं और HBase राइट-आगे-लॉग्स (WAL) को HBase के साथ-साथ सामान्य रूप से चलने वाले HDFS इंस्टेंस में स्टोर किया जाता है।पी>
हम संक्षेप में प्रत्येक घटक का वर्णन करेंगे जो इस वास्तुकला में जाता है और प्रत्येक भूमिका जिसे पूरा करता है।
S3A फाइलसिस्टम एडेप्टर मानक फाइलसिस्टम एपीआई के माध्यम से S3 में डेटा तक पहुंचने के लिए Hadoop द्वारा प्रदान किया गया है। S3A एडेप्टर Hadoop API के खिलाफ लिखे गए एप्लिकेशन को HDFS की तरह "hdfs://namenode:8020/" के बजाय "s3a://my_bucket/" फॉर्म के URI का उपयोग करके S3 में डेटा एक्सेस करने की अनुमति देता है। उपयोग करने के लिए एक डिफ़ॉल्ट "फाइल सिस्टम" निर्दिष्ट करने की क्षमता HDFS के साथ ऑन-प्रिमाइसेस क्लस्टर से S3 के साथ क्लाउड-आधारित क्लस्टर में "लिफ्ट-एंड-शिफ्ट" स्टाइल माइग्रेशन को बेहद सरल बनाती है। HBase को सभी एप्लिकेशन डेटा के लिए एक बेस स्टोरेज लोकेशन (जैसे HDFS या S3 बकेट में एक डायरेक्टरी) के साथ कॉन्फ़िगर किया जा सकता है, जो HBase को समान कार्य करने की अनुमति देता है, भले ही वह डेटा HDFS में हो या S3 में।
S3Guard Apache Hadoop प्रोजेक्ट का एक हिस्सा है जो S3A एडेप्टर के लिए लगातार निर्देशिका सूची और ऑब्जेक्ट स्थिति प्रदान करता है, जो एप्लिकेशन के लिए पारदर्शी है। इसे पूरा करने के लिए, S3Guard S3 में किए गए परिवर्तनों को ट्रैक करने के लिए एक सुसंगत, वितरित डेटाबेस का उपयोग करता है और गारंटी देता है कि क्लाइंट हमेशा S3 से सही स्थिति देखता है। S3Guard के बिना, HBase एक नया StoreFile नहीं देख सकता है जिसे HBase तालिका में जोड़ा गया था। यदि HBase ने अस्थायी रूप से किसी फ़ाइल का निरीक्षण नहीं किया है, तो इससे HBase में डेटा हानि हो सकती है। हालाँकि, S3guard वह सब कुछ प्रदान नहीं करता है जो HBase को S3 का उपयोग करने के लिए आवश्यक है।
HBase ऑब्जेक्ट स्टोर सिमेंटिक्स (या सिर्फ "HBOSS") Apache HBase प्रोजेक्ट के तहत एक नया सॉफ्टवेयर प्रोजेक्ट है, जिसे विशेष रूप से S3Guard और HBase के बीच की खाई को पाटने के लिए बनाया गया है। HBOSS S3A एडेप्टर और S3Guard के शीर्ष पर एक मुखौटा है जो यह सुनिश्चित करने के लिए एक वितरित लॉक का उपयोग करता है कि HBase संचालन परमाणु रूप से हो सकता है S3 पर अपनी फाइलों में हेरफेर करें। एक उदाहरण जहां HBase को परमाणुता की आवश्यकता होती है वह है निर्देशिका का नाम बदलना। S3 क्लाइंट के साथ, एक नाम बदलें को स्रोत डेटा की प्रतिलिपि के रूप में गंतव्य पर लागू किया जाता है और उसके बाद स्रोत डेटा को हटा दिया जाता है। HBOSS द्वारा प्रदान किए गए लॉकिंग के बिना, HBase नाम बदलने का कार्य प्रगति पर देख सकता है जिससे डेटा हानि हो सकती है। इस वितरित लॉकिंग को पूरा करने के लिए, HBOSS Apache ZooKeeper का उपयोग करता है। ज़ूकीपर का पुन:उपयोग डिज़ाइन द्वारा किया गया है क्योंकि HBase को पहले से ही चिड़ियाघरकीपर इंस्टेंस की आवश्यकता होती है ताकि यह सुनिश्चित हो सके कि सभी HBase सेवाएँ एक साथ काम कर रही हैं। इस प्रकार, एचबीओएसएस को शामिल करने के लिए अतिरिक्त सेवा प्रबंधन बोझ की आवश्यकता नहीं है और एस3गार्ड के साथ एस3 का उपयोग करने के लिए एचबीएएस की आवश्यकता के अंतर को बंद कर देता है।
अपने StoreFiles के लिए S3 का उपयोग करने के लिए HBase को कॉन्फ़िगर करने से हमारे उपयोगकर्ताओं को कई लाभ होते हैं। ऐसा ही एक लाभ यह है कि उपयोगकर्ता अपने भंडारण को अलग कर सकते हैं और गणना कर सकते हैं। यदि ऐसे समय में HBase तक पहुंच आवश्यक नहीं है, तो HBase को स्पष्ट रूप से बंद किया जा सकता है और संचालन की किसी भी लागत को समाप्त करने के लिए सभी गणना संसाधनों को पुनः प्राप्त किया जा सकता है। जब HBase एक्सेस की फिर से आवश्यकता होती है, तो HBase क्लस्टर को फिर से बनाया जा सकता है, S3 में समान डेटा की ओर इशारा करते हुए। स्टार्टअप पर, HBase केवल S3 के डेटा से ही खुद को फिर से इनिशियलाइज़ कर सकता है।
HBase StoreFiles को स्टोर करने के लिए S3 का उपयोग करने में कुछ चुनौतियाँ होती हैं। ऐसी ही एक समस्या HDFS की तुलना में S3 में किसी फ़ाइल को यादृच्छिक रूप से देखने के लिए बढ़ी हुई विलंबता है। S3 एक्सेस में बढ़ी हुई विलंबता के परिणामस्वरूप HBase गेट्स और स्कैन्स में सामान्य रूप से HDFS के साथ लगने वाले समय से अधिक समय लगेगा। HDFS के साथ 0.1 से 9 मिलीसेकंड रेंज की तुलना में S3 लेटेंसी 10 से 100 मिलीसेकंड के बीच भिन्न होती है। बकेट कैश का उपयोग करने के लिए HBase को स्वचालित रूप से कॉन्फ़िगर करके CDP इस S3 विलंबता के प्रभाव को कम कर सकता है। बकेट कैश सक्षम होने के साथ, S3 विलंबता का अनुभव केवल पहली बार किसी StoreFile को S3 से बाहर पढ़ने पर किया जाता है। HBase एक फ़ाइल को पढ़ने के बाद, यह धीमी S3 रीड को तेज़ स्थानीय मेमोरी रीड के साथ बदलने के लिए कच्चे डेटा को कैश करने का प्रयास करेगा। जब एक HBase क्लस्टर को CDP के माध्यम से लॉन्च किया जाता है, तो यह "हॉट" डेटा के तेजी से पढ़ने के लिए S3 इन-मेमोरी से हाल ही में पढ़े गए डेटा को कैश करने के लिए स्वचालित रूप से कॉन्फ़िगर किया जाता है।
हम अपने उपयोगकर्ताओं को ये नई क्षमताएं प्रदान करके बेहद प्रसन्न हैं। आज ही CDP में ऑपरेशनल डेटाबेस टेम्प्लेट में S3 पर चल रहे HBase को आज़माएं!