2012-10-22 16 views
16

हम सभी जानते हैं कि एचडीएफएस में ब्लॉक आकार पारंपरिक फाइल सिस्टम में ब्लॉक आकार की तुलना में काफी बड़ा (64 एम या 128 एम) है। यह स्थानांतरण समय की तुलना में तलाश समय के प्रतिशत को कम करने के लिए किया जाता है (डिस्क दर पर सुधार की तुलना में स्थानांतरण दर में सुधार बहुत बड़े पैमाने पर किया गया है, इसलिए फ़ाइल सिस्टम को डिजाइन करते समय लक्ष्य हमेशा कम करना होता है स्थानांतरित होने वाले डेटा की मात्रा की तुलना में मांगों की संख्या)। लेकिन यह आंतरिक विखंडन के एक अतिरिक्त नुकसान के साथ आता है (यही कारण है कि पारंपरिक फाइल सिस्टम ब्लॉक आकार इतने ऊंचे नहीं हैं और केवल कुछ केबी के क्रम में हैं - आम तौर पर 4 के या 8 के)।एचडीएफएस में बड़े ब्लॉक आकार! अप्रयुक्त स्थान के लिए कैसे जिम्मेदार है?

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

+0

आकार 64 एमबी मुख्य रूप से नेटवर्क यातायात को कम करने के लिए है। डिस्क खोज समय या अंतर्निहित फ़ाइल सिस्टम कॉल के संबंध में कोई अन्य लाभ नहीं है, फिर भी ओएस चयनित आकार 4K का सम्मान करता है। – ernesto

उत्तर

18

@Abhishek: HFDS में ब्लॉक विभाजन सिर्फ तार्किक अंतर्निहित फाइल सिस्टम के भौतिक ब्लॉक के ऊपर बना हुआ है (उदाहरण के लिए ext3/वसा)। फाइल सिस्टम भौतिक रूप से ब्लॉक में विभाजित नहीं है (64 एमबी या 128 एमबी (या जो भी ब्लॉक आकार हो सकता है) का कहना है)। यह नाम नोड में मेटाडेटा को स्टोर करने के लिए सिर्फ एक अमूर्त है। चूंकि नामनोड को पूरे मेटाडेटा को मेमोरी में लोड करना पड़ता है इसलिए मेटाडेटा प्रविष्टियों की संख्या की सीमा होती है जिससे बड़े ब्लॉक आकार की आवश्यकता होती है।

इसलिए, एचडीएफएस पर संग्रहीत तीन 8 एमबी फाइलें तार्किक रूप से 3 ब्लॉक (नामनोड में 3 मेटाडाटा प्रविष्टियां) पर कब्जा करती हैं लेकिन मूल रूप से अंतर्निहित फाइल सिस्टम में 8 * 3 = 24 एमबी स्पेस पर कब्जा करती हैं।

नामनोड की स्मृति पर सीमा पर विचार करते समय बड़े ब्लॉक आकार भंडारण स्थान के उचित उपयोग के लिए खाते हैं।

+0

स्पष्टीकरण के लिए धन्यवाद। यही वह है जिसकी तलाश में मैं हूं। –

+0

@ सत्बीर: मुझे यहां एक स्पष्टीकरण की आवश्यकता है: तीन 8 एमबी फाइलों को तार्किक रूप से केवल एक ब्लॉक पर कब्जा करना चाहिए (क्योंकि एचडीएफएस ब्लॉक आकार 64 एमबी है)? –

+0

@ ब्रेनस्टॉर्म: तीन 8 एमबी फाइलें 3 ब्लॉक पर कब्जा कर सकती हैं, और प्रत्येक ब्लॉक आकार 8 एमबी होगा। – Satbir

9

Hadoop के अनुसार - यह निश्चित गाइड

एक एकल डिस्क के लिए एक फाइल सिस्टम के विपरीत, HDFS में एक फ़ाइल है कि एक ही ब्लॉक से छोटी है अंतर्निहित भंडारण की एक पूरी ब्लॉक की कीमत पर कब्जा नहीं है। जब अयोग्य हो, इस पुस्तक में "ब्लॉक" शब्द एचडीएफएस में एक ब्लॉक को संदर्भित करता है।

एचडीएफएस में प्रत्येक ब्लॉक अंतर्निहित ओएस फ़ाइल सिस्टम (ext3, ext4 आदि) पर डेटा नोड में एक फ़ाइल के रूप में संग्रहीत किया जाता है और संबंधित विवरण नाम नोड में संग्रहीत होते हैं। आइए मान लें कि फ़ाइल का आकार 200 एमबी है और ब्लॉक का आकार 64 एमबी है। इस परिदृश्य में, फ़ाइल के लिए 4 ब्लॉक होंगे जो 64 एमबी, 64 एमबी, 64 एमबी और 8 एमबी आकार के डेटा नोड में 4 फाइलों के अनुरूप होंगे (1 की प्रतिकृति के साथ मानते हैं)।

पर डेटा नोड एक ls -ltr ब्लॉक विवरण

-rw-rw-r-- 1 प्रशिक्षण प्रशिक्षण 11 अक्टू 21 15:27 blk_-7636754311343966967_1002.meta
-rw-rw- दिखाएगा आर -1 प्रशिक्षण प्रशिक्षण 4 अक्टूबर 21 15:27 blk_-7636754311343966967
-rw-rw-r-- 1 प्रशिक्षण प्रशिक्षण 99 अक्टूबर 21 15:29 blk_-2464541116551769838_1003.meta
-rw-rw-r-- 1 प्रशिक्षण प्रशिक्षण 11403 अक्टूबर 21 15:29 blk_-2464541116551769838
-rw-rw-r-- 1 प्रशिक्षण प्रशिक्षण 99 अक्टूबर 21 15:29 blk_-2951058074740783 562_1004.meta
-rw-rw-r-- 1 प्रशिक्षण प्रशिक्षण 11544 अक्टू 21 15:29 blk_-2951058074740783562

+0

आपके उत्तर के लिए धन्यवाद लेकिन मुझे अपने प्रश्न को थोड़ा और स्पष्ट करने दें। मान लीजिए कि 3 8 एमबी फाइलें हैं। ऐसे मामले में क्या होगा? क्या वे एचडीएफएस पर 3 अलग-अलग ब्लॉक पर कब्जा करेंगे या उसी ब्लॉक में 64 एम क्षमता क्षमता व्यक्तिगत फाइलों को समायोजित करने में सक्षम होगी? –

+0

यदि एचडीएफएस में तीन 8 एमबी फाइलें हैं, तो अंतर्निहित फाइल सिस्टम (ext3, ext4 आदि) में तीन 8 एमबी फाइलें होंगी। विभिन्न फ़ाइलों के लिए ब्लॉक डिफ़ॉल्ट रूप से विलय नहीं किया जाता है। [हाडोप संग्रहण] (http://hadoop.apache.org/docs/mapreduce/r0.22.0/hadoop_archives.html) यदि आवश्यक हो तो फ़ाइलों को उसी ब्लॉक में मर्ज करने के लिए उपयोग किया जा सकता है। यह [tar] के समान है (http://en.wikipedia.org/wiki/Tar_%28file_format%29)। –

+0

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

1

सामान्य फ़ाइल सिस्टम में यदि हम एक खाली फ़ाइल बनाते हैं, तो यह 4k आकार भी रखता है, क्योंकि यह ब्लॉक पर संग्रहीत होता है।एचडीएफएस में ऐसा नहीं होगा, 1 जीबी फ़ाइल के लिए केवल 1 जीबी मेमोरी का इस्तेमाल किया जाता है, न कि 4 जीबी। अधिक स्पष्ट होने के लिए।

ओएस में: फ़ाइल का आकार 1 केबी, ब्लॉक आकार: 4 केबी, मेम प्रयुक्त: 4 केबी, अपशिष्ट: 3 केबी। एचडीएफएस में: फ़ाइल का आकार 1 जीबी, ब्लॉक आकार: 4 जीबी, मेम प्रयुक्त: 1 जीबी, अपशिष्ट: 0 जीबी, शेष 3 जीबी अन्य ब्लॉक द्वारा उपयोग किए जाने के लिए स्वतंत्र हैं।

* संख्याओं को गंभीरता से न लें, उन्हें बिंदु स्पष्ट करने के लिए संख्याएं पकाई जाती हैं।

यदि आपके पास 1 जीबी की 2 अलग-अलग फाइल है तो प्रत्येक 1 जीबी के 2 ब्लॉक होंगे। फ़ाइल सिस्टम में यदि आप प्रत्येक 1 केबी की 2 फाइलें संग्रहीत करते हैं, तो आपके पास 6 केबी बर्बादी के साथ 4 केबी + 4 केबी = 8 केबी की 2 अलग-अलग फाइलें होंगी।

SO यह फ़ाइल सिस्टम से एचडीएफएस को बेहतर बनाता है। लेकिन विडंबना यह है कि एचडीएफएस स्थानीय फाइल सिस्टम का उपयोग करता है और अंत में यह एक ही मुद्दे के साथ समाप्त होता है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^