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

पेश है Apache HBase मीडियम ऑब्जेक्ट स्टोरेज (MOB) कॉम्पैक्शन पार्टीशन पॉलिसी

परिचय

Apache Hbase मीडियम ऑब्जेक्ट स्टोरेज (MOB) फीचर HBASE-11339 द्वारा पेश किया गया था। यह सुविधा मध्यम आकार के मूल्यों के लिए कम विलंबता पढ़ने और लिखने की पहुंच में सुधार करती है (आदर्श रूप से हमारे परीक्षण परिणामों के आधार पर 100K से 10MB तक), यह दस्तावेजों, छवियों और अन्य मध्यम आकार की वस्तुओं को संग्रहीत करने के लिए अच्छी तरह से अनुकूल बनाती है [1]। Apache HBase MOB फीचर फ़ाइल संदर्भों और MOB ऑब्जेक्ट्स के लिए IO पथों को अलग करके, MOB के लिए विभिन्न संघनन नीतियों को लागू करके और इस प्रकार HBase के संघनन द्वारा बनाए गए लेखन प्रवर्धन को कम करके इस सुधार को प्राप्त करता है। MOB ऑब्जेक्ट्स को एक विशेष क्षेत्र में संग्रहित किया जाता है, जिसे MOB क्षेत्र कहा जाता है। एक टेबल के लिए MOB ऑब्जेक्ट को MOB फाइल के रूप में MOB क्षेत्र में संग्रहीत किया जाता है, जिसका अर्थ है कि इस क्षेत्र में बहुत सारी MOB फाइलें होंगी। कृपया Apache HBase MOB आर्किटेक्चर के लिए [1] से चित्र 1 देखें।

चित्र 1 Apache HBase MOB आर्किटेक्चर

प्रारंभ में, MOB फाइलें अपेक्षाकृत छोटी होती हैं (1 या 2 HDFS ब्लॉक से कम)। Apache HDFS दक्षता में सुधार करने के लिए, MOB फ़ाइलों को समय-समय पर MOB संघनन नामक ऑपरेशन के माध्यम से बड़ी फ़ाइलों में मिला दिया जाता है , जो सामान्य संघनन प्रक्रिया से स्वतंत्र है। MOB संघनन का प्रारंभिक संस्करण एक विशेष दिन से कई MOB फ़ाइलों को उस दिन के लिए बड़ी MOB फ़ाइलों में फिर से लिखता है। आइए इसे स्पष्ट करने के लिए नीचे दी गई उदाहरण फ़ाइल सूची का उपयोग करें। तालिका t1 में दो क्षेत्र (r1, r2) हैं, इसमें एक स्तंभ परिवार (f1) है, और MOB सक्षम है। आप देख सकते हैं कि दो उपसर्ग हैं; D279186428a75016b17e4df5ea43d080 क्षेत्र r1 और D41d8cd98f00b204e9800998ecf8427e के लिए प्रारंभ कुंजी के हैश मान से क्षेत्र r2 के लिए प्रारंभ कुंजी के हैश मान से मेल खाता है। क्षेत्र r1 के लिए, 1/1/2016 और 1/2/2016 को प्रत्येक में दो MOB फ़ाइलें हैं, और क्षेत्र r2 के लिए, MOB क्षेत्र के अंतर्गत 1/1/2016 को 3 MOB फ़ाइलें हैं, जो /hbase/data/ है mobdir/डेटा/डिफ़ॉल्ट/t1/78e317a6e78a0fceb27b9fa0cb9dcf5b/f1।

>ls  /hbase/data/mobdir/data/default/t1/78e317a6e78a0fceb27b9fa0cb9dcf5b/f1

D279186428a75016b17e4df5ea43d08020160101 f9d9713ab2fb4a8b825485f6a8acfcd5

D279186428a75016b17e4df5ea43d08020160101 af7713ab2fbf4a8abc5135f6a8467ca8

D279186428a75016b17e4df5ea43d08020160102 9013ab2fceda8b825485f6a8acfcd515

D279186428a75016b17e4df5ea43d08020160102 9a7978013ab2fceda8b825485f6a8acf

D41d8cd98f00b204e9800998ecf8427e20160101 fc94af623c2345f1b241887721e32a48

D41d8cd98f00b204e9800998ecf8427e20160101 d0954af623c2345f1b241887721e3259

D41d8cd98f00b204e9800998ecf8427e20160101 439adf4af623c2345f1b241887721e32

MOB संघनन के बाद, क्षेत्र r1 के लिए 1/1/2016 और 1/2/2016 को दो MOB फ़ाइलें प्रत्येक दिन के लिए एक फ़ाइल में संकलित की जाती हैं। क्षेत्र r2 के लिए 1/1/2016 को तीन MOB फ़ाइलें एक फ़ाइल में संकलित की गई हैं।

D279186428a75016b17e4df5ea43d08020160101 f49a9d9713ab2fb4a8b825485f6a8acf

D279186428a75016b17e4df5ea43d08020160102 bc9176d09424e49a9d9065caf9713ab2

D41d8cd98f00b204e9800998ecf8427e20160101 d9cb0954af623c2345f1b241887721e3

चूंकि किसी क्षेत्र के लिए एक ही दिन से केवल एमओबी फाइलों को एक साथ संकलित किया जा सकता है, एक वर्ष में एक विशिष्ट परिवार के लिए एकल एमओबी क्षेत्र निर्देशिका के तहत एमओबी फाइलों की न्यूनतम सीमा 365 x संख्या-क्षेत्र होगी। 1000 क्षेत्रों के साथ, 10 वर्षों में, 365 x 1000 x 10, 3.65 मिलियन फ़ाइलें MOB संघनन के बाद होंगी, और यह बढ़ती रहती है! दुर्भाग्य से, अपाचे एचडीएफएस में एक निर्देशिका के तहत फाइलों की संख्या के लिए स्मृति-बाधित सीमा है [2]। MOB फ़ाइलों की संख्या इस HDFS सीमा से अधिक होने के बाद, MOB तालिका अब लिखने योग्य नहीं है। Apache HDFS के लिए एक निर्देशिका के अंतर्गत फ़ाइलों की डिफ़ॉल्ट अधिकतम संख्या 1 मिलियन है। 1,000 क्षेत्रों के लिए, यह लगभग 3 वर्षों में इस सीमा तक पहुंच जाएगा। अधिक क्षेत्रों के साथ, यह तेजी से सीमा तक पहुंच जाएगा।

HBASE-16981 ने इस MOB फ़ाइल काउंट स्केलिंग समस्या को क्रमशः 7 या ~30 के कारकों द्वारा सुधारने के लिए साप्ताहिक और मासिक MOB संघनन विभाजन एकत्रीकरण नीतियां पेश कीं।

साप्ताहिक और मासिक MOB संघनन विभाजन नीतियों का डिज़ाइन (HBASE-16981)

HBASE-16981 का मूल विचार एक कैलेंडर सप्ताह या एक कैलेंडर माह में MOB फ़ाइलों को कम, बड़ी फ़ाइलों में संकुचित करना है। कैलेंडर सप्ताह को आईएसओ 8601 द्वारा परिभाषित किया गया है, यह सोमवार को शुरू होता है और रविवार को समाप्त होता है। आम तौर पर, साप्ताहिक नीति के साथ, भीड़ संघनन के बाद प्रति क्षेत्र प्रति सप्ताह एक फ़ाइल होगी; मासिक नीति के साथ, MOB संघनन के बाद प्रति क्षेत्र प्रति माह एक फ़ाइल होगी। एक वर्ष में एक विशिष्ट परिवार के लिए एमओबी क्षेत्र निर्देशिका के तहत एमओबी फाइलों की संख्या को घटाकर 52 x संख्या-क्षेत्रों के साथ साप्ताहिक नीति और 12 x संख्या-क्षेत्रों की मासिक नीति के साथ किया जाएगा। यह संघनन के बाद MOB फ़ाइलों की संख्या को बहुत कम कर देता है।

प्रारंभिक प्रस्तावित दृष्टिकोण

जब MOB संघनन होता है, HBase मास्टर एक कैलेंडर माह या एक कैलेंडर सप्ताह के भीतर MOB फ़ाइलों का चयन करता है और उन्हें कम, बड़ी फ़ाइलों में एकत्रित करता है। MOB संघनन कितनी बार होता है, इस पर निर्भर करते हुए, यह संभव है कि फ़ाइलें कई बार संकुचित हों। एक उदाहरण के रूप में, मान लें कि मासिक एकत्रीकरण नीति के साथ MOB संघनन ऑपरेशन प्रतिदिन होता है। 1 दिन पर, MOB संघनन पहले दिन की सभी फ़ाइलों को एक फ़ाइल में संकुचित कर देता है। 2 दिन पर, MOB संघनन पहले दिन से फ़ाइल को और दूसरे दिन से फ़ाइलों को एक नई फ़ाइल में संकुचित करता है; 3 दिन पर, MOB संघनन दूसरे दिन से फ़ाइल को और 3 दिन से फ़ाइलों को एक नई फ़ाइल में संकुचित कर देगा, यह महीने के अंतिम दिन तक चलता रहता है। इस मामले में, पहले दिन की फाइलें 30 गुना से अधिक संकुचित होती हैं और इस प्रकार आईओ लिखने की मात्रा को 30x से अधिक बढ़ा देती हैं।

Apache HBase MOB का डिज़ाइन लक्ष्य MOB संघनन द्वारा बनाए गए लेखन प्रवर्धन को कम करना है। यह भोला दृष्टिकोण डिजाइन लक्ष्य को हरा देता है।

अंतिम क्रियान्वित दृष्टिकोण

प्रारंभिक प्रस्तावित दृष्टिकोण की कमी को दूर करने के लिए, HBASE-16981 में नई साप्ताहिक और मासिक नीतियों के लिए चरणबद्ध MOB संघनन को अपनाया गया है। चित्र 2 दिखाता है कि यह मासिक नीति के साथ कैसे काम करता है, यह साप्ताहिक नीति के लिए भी इसी तरह काम करता है।

चित्र 2 मासिक नीति के साथ भीड़ संघटन का मंचन

जैसा कि चित्र 2 दिखाता है, भीड़ का संघनन 11/15/2016 को होता है। वर्तमान कैलेंडर सप्ताह में फ़ाइलें कॉन्फ़िगर किए गए MOB थ्रेशोल्ड के साथ दैनिक विभाजन के आधार पर संकलित की जाती हैं। चित्र 2 में, 11/14/2016 की फ़ाइलों को एक साथ संकलित किया गया है, और 11/15/2016 के लिए फ़ाइलों को एक साथ संकलित किया गया है। चालू माह के पिछले कैलेंडर सप्ताहों में फ़ाइलें साप्ताहिक विभाजन के आधार पर साप्ताहिक सीमा (कॉन्फ़िगर-एमओबी-थ्रेसहोल्ड x 7) के आधार पर संकलित की जाती हैं। चित्र 2 में, 11/1/2016 से 11/6/2016 तक की फ़ाइलों को एक साथ संकलित किया गया है और 11/7/2016 से 11/13/2016 तक की फ़ाइलों को एक साथ संकलित किया गया है। पिछले महीनों में फ़ाइलें मासिक विभाजन के आधार पर मासिक सीमा (कॉन्फ़िगर-एमओबी-थ्रेसहोल्ड x 28) के आधार पर संकलित की जाती हैं। चित्र 2 में, 10/1/2016 से 10/31/2016 तक की फ़ाइलों को एक साथ संकलित किया गया है। जैसा कि आप देख सकते हैं, नवंबर 2016 में पहला कैलेंडर सप्ताह 10/31/2016 से 11/6/2016 तक है। चूँकि 10/31/2016 पिछले महीने में है, उस दिन की फाइलें मासिक विभाजन के आधार पर संकलित की जाती हैं, यह साप्ताहिक विभाजन (11/1/2016 ~ 11/6/2016) के लिए केवल 6 दिन छोड़ती है। संघनन के बाद, 5 फ़ाइलें हैं यदि MOB संघनन सीमा और MOB संघनन बैच आकार उचित रूप से कॉन्फ़िगर किया गया है।

इस डिज़ाइन के साथ, MOB फ़ाइलें 2-चरण या 3-चरण संघनन से गुज़रती हैं। प्रत्येक चरण में,  दैनिक विभाजन, साप्ताहिक विभाजन या मासिक विभाजन को बढ़ते हुए MOB संघनन सीमा के साथ लागू किया जाता है। एमओबी फाइलें सामान्य रूप से मासिक पॉलिसी के साथ अधिकतम 3 बार और उनके जीवनकाल में सामान्य रूप से साप्ताहिक पॉलिसी के साथ अधिकतम 2 बार संकुचित की जाती हैं।

डिज़ाइन के बारे में अधिक जानकारी के लिए, कृपया [3] देखें।

उपयोग

डिफ़ॉल्ट रूप से, MOB संघनन विभाजन नीति दैनिक है। साप्ताहिक या मासिक नीति लागू करने के लिए, MOB कॉलम परिवार के लिए एक नई विशेषता MOB_COMPACT_PARTITION_POLICY जोड़ी गई है। HBase शेल से तालिका बनाते समय उपयोगकर्ता इस विशेषता को सेट कर सकता है।

>create 't1', {NAME => 'f1', IS_MOB => true, MOB_THRESHOLD => 1000000, MOB_COMPACT_PARTITION_POLICY => 'weekly’}

उपयोगकर्ता मौजूदा तालिका के MOB_COMPACT_PARTITION_POLICY को HBase शेल से भी बदल सकता है।

>alter 't1', {NAME => 'f1', MOB_COMPACT_PARTITION_POLICY => 'monthly'}

यदि नीति दैनिक से साप्ताहिक या मासिक, या साप्ताहिक से मासिक में बदल जाती है, तो अगला MOB संघनन उन MOB फ़ाइलों को पुनः संयोजित करेगा जिन्हें पिछली नीति के साथ संकलित किया गया है। यदि नीति मासिक या साप्ताहिक से दैनिक, या मासिक से साप्ताहिक में बदलती है, तो पिछली नीति के साथ पहले से ही संकुचित MOB फ़ाइलें नई नीति के साथ पुन:संयोजित नहीं की जाएंगी।

निष्कर्ष

HBASE-16981 Apache HBase MOB के साथ फ़ाइल संख्या स्केलिंग समस्या को हल करता है। यह Apache HBase 2.0.0 रिलीज में उपलब्ध होगा। CDH, CDH 5.4.0+ में Apache HBase MOB को सपोर्ट करता है। HBASE-16981 बैकपोर्टेड है और CDH 5.11.0 में उपलब्ध होगा।

पावती

ब्लॉग की समीक्षा करने के लिए HBASE-16981, जोनाथन हसीह और सीन बसबे की डिज़ाइन और समीक्षा में सहायता के लिए जिंगचेंग डू और अनूप सैम जॉन का विशेष धन्यवाद।

संदर्भ

[1] https://clouderatemp.wpengine.com/blog/2015/06/inside-apache-hbases-new-support-for-mobs/

[2] https://clouderatemp.wpengine.com/blog/2009/02/the-small-files-problem/

[3] https://issues.apache.org/jira/browse/HBASE-16981


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. HBase में बैकअप और डिजास्टर रिकवरी के लिए दृष्टिकोण

  2. अपाचे HBase I/O - HFile

  3. उत्पादन के लिए एमएल मॉडल कैसे तैनात करें

  4. Apache HBase क्षेत्र विभाजन और विलय

  5. HBase के लिए जावा कचरा संग्रह ट्यूनिंग