CDH की वर्तमान (4.2) रिलीज़ - Apache Hadoop और संबंधित परियोजनाओं (अपाचे HBase सहित) के Cloudera के 100% ओपन-सोर्स वितरण - ने एक नया HBase फीचर पेश किया, जो हाल ही में ट्रंक में आया, जो एक व्यवस्थापक को एक निर्दिष्ट का स्नैपशॉट लेने की अनुमति देता है। टेबल।
CDH 4.2 से पहले, किसी तालिका का बैकअप लेने या क्लोन करने का एकमात्र तरीका प्रतिलिपि/निर्यात तालिका का उपयोग करना था, या तालिका को अक्षम करने के बाद, HDFS में सभी hfiles की प्रतिलिपि बनाना था। कॉपी/एक्सपोर्ट टेबल टूल्स का एक सेट है जो टेबल को स्कैन और कॉपी करने के लिए मैपरेडस का उपयोग करता है लेकिन रीजन सर्वर के प्रदर्शन पर सीधा प्रभाव डालता है। तालिका को अक्षम करने से सभी पढ़ना और लिखना बंद हो जाता है, जो लगभग हमेशा अस्वीकार्य होगा।
इसके विपरीत, HBase स्नैपशॉट एक व्यवस्थापक को डेटा प्रतियों के बिना और क्षेत्र सर्वर पर न्यूनतम प्रभाव के साथ एक तालिका को क्लोन करने की अनुमति देता है। स्नैपशॉट को किसी अन्य क्लस्टर में निर्यात करना किसी भी क्षेत्र सर्वर को सीधे प्रभावित नहीं करता है; निर्यात तर्क के एक अतिरिक्त बिट के साथ सिर्फ एक distcp है।
यहाँ HBase स्नैपशॉट के कुछ उपयोग के मामले दिए गए हैं:
- उपयोगकर्ता/एप्लिकेशन त्रुटियों से पुनर्प्राप्ति
- एक ज्ञात सुरक्षित स्थिति से पुनर्स्थापित/पुनर्प्राप्त करें।
- पिछले स्नैपशॉट देखें और उत्पादन में अंतर को चुनिंदा रूप से मर्ज करें।
- किसी बड़े एप्लिकेशन अपग्रेड या परिवर्तन से ठीक पहले एक स्नैपशॉट सहेजें।
- विशिष्ट समय पर डेटा के दृश्यों की लेखा परीक्षा और/या रिपोर्टिंग
- अनुपालन उद्देश्यों के लिए मासिक डेटा कैप्चर करें।
- दिन के अंत/माह/तिमाही रिपोर्ट चलाएं।
- आवेदन परीक्षण
- स्नैपशॉट से उत्पादन के समान डेटा पर स्कीमा या एप्लिकेशन परिवर्तन का परीक्षण करें और फिर उसे फेंक दें। उदाहरण के लिए:स्नैपशॉट लें, स्नैपशॉट सामग्री (स्कीमा प्लस डेटा) से एक नई तालिका बनाएं, और स्कीमा को बदलकर, पंक्तियों को जोड़कर और हटाकर नई तालिका में हेरफेर करें, और इसी तरह। (मूल तालिका, स्नैपशॉट और नई तालिका परस्पर स्वतंत्र रहती हैं।)
- कार्य को उतारना
- स्नैपशॉट लें, इसे दूसरे क्लस्टर में निर्यात करें, और अपना MapReduce जॉब चलाएं। चूंकि निर्यात स्नैपशॉट एचडीएफएस स्तर पर संचालित होता है, आप अपने मुख्य एचबीएएस क्लस्टर को उतना धीमा नहीं करते जितना कि कॉपीटेबल करता है।
स्नैपशॉट क्या है?
स्नैपशॉट मेटाडेटा जानकारी का एक सेट है जो किसी व्यवस्थापक को तालिका की पिछली स्थिति में वापस जाने की अनुमति देता है। स्नैपशॉट तालिका की प्रतिलिपि नहीं है; यह केवल फ़ाइल नामों की एक सूची है और डेटा की प्रतिलिपि नहीं बनाता है। एक पूर्ण स्नैपशॉट पुनर्स्थापना का अर्थ है कि आप पिछली "तालिका स्कीमा" पर वापस आ जाते हैं और स्नैपशॉट लेने के बाद से किए गए किसी भी परिवर्तन को खोते हुए आपको अपना पिछला डेटा वापस मिल जाता है।
संचालन
- स्नैपशॉट लें: यह ऑपरेशन एक निर्दिष्ट टेबल पर स्नैपशॉट लेने का प्रयास करता है। यदि संतुलन, विभाजन या विलय के दौरान क्षेत्र घूम रहे हैं तो ऑपरेशन विफल हो सकता है।
- स्नैपशॉट क्लोन करें: यह ऑपरेशन उसी स्कीमा का उपयोग करके और निर्दिष्ट स्नैपशॉट में मौजूद समान डेटा के साथ एक नई तालिका बनाता है। इस ऑपरेशन का नतीजा एक नई पूरी तरह कार्यात्मक तालिका है जिसे मूल तालिका या स्नैपशॉट पर बिना किसी प्रभाव के संशोधित किया जा सकता है।
- स्नैपशॉट पुनर्स्थापित करें: यह ऑपरेशन तालिका स्कीमा और डेटा को स्नैपशॉट स्थिति में वापस लाता है। (नोट:यह ऑपरेशन स्नैपशॉट लेने के बाद से किए गए किसी भी बदलाव को छोड़ देता है।)
- स्नैपशॉट हटाएं: यह कार्रवाई किसी भी क्लोन या अन्य स्नैपशॉट को प्रभावित किए बिना, साझा न किए गए डिस्क स्थान को मुक्त करते हुए, सिस्टम से एक स्नैपशॉट को हटा देती है।
- स्नैपशॉट निर्यात करें: यह ऑपरेशन स्नैपशॉट डेटा और मेटाडेटा को दूसरे क्लस्टर में कॉपी करता है। ऑपरेशन में केवल एचडीएफएस शामिल है, इसलिए मास्टर या क्षेत्र सर्वर के साथ कोई संचार नहीं है, और इस प्रकार एचबीएएस क्लस्टर डाउन हो सकता है।
जीरो-कॉपी स्नैपशॉट, रिस्टोर, क्लोन
स्नैपशॉट और कॉपीटेबल/एक्सपोर्टटेबल के बीच मुख्य अंतर यह है कि स्नैपशॉट ऑपरेशन केवल मेटाडेटा लिखता है। इसमें बड़ी मात्रा में डेटा प्रतियां शामिल नहीं हैं।
मुख्य HBase डिजाइन सिद्धांतों में से एक यह है कि एक बार एक फाइल लिखी जाने के बाद इसे कभी भी संशोधित नहीं किया जाएगा। अपरिवर्तनीय फ़ाइलें होने का अर्थ है कि स्नैपशॉट केवल स्नैपशॉट ऑपरेशन के समय उपयोग की गई फ़ाइलों का ट्रैक रखता है, और एक संघनन के दौरान सिस्टम को सूचित करने के लिए स्नैपशॉट की ज़िम्मेदारी है कि फ़ाइल को हटाया नहीं जाना चाहिए, बल्कि इसे संग्रहीत किया जाना चाहिए।
क्लोन या रिस्टोर ऑपरेशन पर भी यही सिद्धांत लागू होता है। चूंकि फ़ाइलें अपरिवर्तनीय हैं, इसलिए स्नैपशॉट द्वारा संदर्भित फ़ाइलों के लिए केवल "लिंक" के साथ एक नई तालिका बनाई जाती है।
निर्यात स्नैपशॉट एकमात्र ऐसा ऑपरेशन है जिसके लिए डेटा की प्रतिलिपि की आवश्यकता होती है, क्योंकि अन्य क्लस्टर में डेटा फ़ाइलें नहीं होती हैं।
स्नैपशॉट निर्यात करें बनाम कॉपी/निर्यात तालिका
कॉपी/एक्सपोर्ट जॉब की तुलना में बेहतर कंसिस्टेंसी गारंटी के अलावा, स्नैपशॉट एक्सपोर्ट करने और टेबल को कॉपी/एक्सपोर्ट करने के बीच मुख्य अंतर यह है कि एक्सपोर्ट स्नैपशॉट एचडीएफएस स्तर पर संचालित होता है। इसका मतलब है कि मास्टर और रीजन सर्वर इस ऑपरेशन में शामिल नहीं हैं। नतीजतन, डेटा के लिए कोई अनावश्यक कैश नहीं बनाया जाता है और स्कैन प्रक्रिया के दौरान बनाई गई वस्तुओं की संख्या के कारण अतिरिक्त जीसी विराम का कोई ट्रिगर नहीं होता है। HBase क्लस्टर पर प्रदर्शन प्रभाव DataNodes द्वारा अनुभव किए गए अतिरिक्त नेटवर्क और डिस्क कार्यभार से उपजा है।
HBase शेल:स्नैपशॉट संचालन
पुष्टि करें कि hbase.snapshot.enabled
. की जांच करके स्नैपशॉट समर्थन चालू है hbase-site.xml में संपत्ति सत्य पर सेट है। किसी निर्दिष्ट तालिका का स्नैपशॉट लेने के लिए, snapshot
. का उपयोग करें आज्ञा। (कोई फ़ाइल कॉपी नहीं की जाती)
hbase> snapshot ‘tableName’, ‘snapshotName’
सभी स्नैपशॉट को सूचीबद्ध करने के लिए, list_snapshot
. का उपयोग करें आज्ञा। यह स्नैपशॉट नाम, स्रोत तालिका और निर्माण दिनांक और समय प्रदर्शित करेगा।
hbase> list_snapshots SNAPSHOT TABLE + CREATION TIME TestSnapshot TestTable (Mon Feb 25 21:13:49 +0000 2013)
स्नैपशॉट निकालने के लिए, delete_snapshot
. का उपयोग करें आज्ञा। स्नैपशॉट को हटाने से क्लोन टेबल या बाद में लिए गए अन्य स्नैपशॉट पर कोई प्रभाव नहीं पड़ता है।
hbase> delete_snapshot 'snapshotName'
निर्दिष्ट स्नैपशॉट (क्लोन) से एक नई तालिका बनाने के लिए, clone_snapshot
. का उपयोग करें आज्ञा। कोई डेटा कॉपी नहीं की जाती है, इसलिए आप एक ही डेटा के लिए दोगुने स्थान का उपयोग नहीं करते हैं।
hbase> clone_snapshot 'snapshotName', 'newTableName'
वर्तमान तालिका स्कीमा/डेटा को किसी निर्दिष्ट स्नैपशॉट सामग्री से बदलने के लिए, restore_snapshot
का उपयोग करें आदेश।
hbase> restore_snapshot 'snapshotName'
किसी मौजूदा स्नैपशॉट को दूसरे क्लस्टर में निर्यात करने के लिए, ExportSnapshot
. का उपयोग करें औजार। निर्यात क्षेत्र सर्वर के कार्यभार को प्रभावित नहीं करता है, यह एचडीएफएस स्तर पर काम करता है और आपको एक एचडीएफएस स्थान (अन्य क्लस्टर का hbase.rootdir) निर्दिष्ट करना होगा।
hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot SnapshotName -copy-to hdfs:///srv2:8082/hbase
वर्तमान सीमाएं
स्नैपशॉट कुछ मान्यताओं पर भरोसा करते हैं, और वर्तमान में कुछ ऐसे टूल हैं जो पूरी तरह से नई सुविधा के साथ एकीकृत नहीं हैं:
- स्नैपशॉट द्वारा संदर्भित क्षेत्रों को मर्ज करने से स्नैपशॉट और क्लोन टेबल पर डेटा हानि होती है।
- पुनर्स्थापित तालिका के लिए प्रतिकृति के साथ तालिका को पुनर्स्थापित करना दो क्लस्टर के साथ सिंक से बाहर समाप्त होता है। तालिका प्रतिकृति पर पुनर्स्थापित नहीं की गई है।
निष्कर्ष
वर्तमान में स्नैपशॉट सुविधा में सभी बुनियादी आवश्यक कार्यक्षमता शामिल है, लेकिन अभी भी बहुत कुछ करना बाकी है, जिसमें मीट्रिक, वेब UI एकीकरण, डिस्क उपयोग अनुकूलन और बहुत कुछ शामिल हैं।
HBase को कॉन्फ़िगर करने और स्नैपशॉट का उपयोग करने के तरीके के बारे में अधिक जानने के लिए, दस्तावेज़ीकरण की समीक्षा करें।
Matteo Bertozzi, Platform टीम के एक सॉफ़्टवेयर इंजीनियर और HBase कमिटर हैं।