2012-02-06 13 views
7

मान लीजिए कि कोई डिफ़ॉल्ट ब्लॉक आकार (128 एमबी) का उपयोग कर रहा है, और 130 एमबी का उपयोग कर एक फाइल है; तो एक पूर्ण आकार ब्लॉक और 2 एमबी के साथ एक ब्लॉक का उपयोग कर। फिर फ़ाइल में 20 एमबी संलग्न करने की जरूरत है (कुल 150 एमबी होना चाहिए)। क्या होता है?एडीएंड के साथ एचडीएफएस कैसे काम करता है

क्या एचडीएफएस वास्तव में अंतिम ब्लॉक के आकार को 2 एमबी से 22 एमबी तक आकार बदलता है? या एक नया ब्लॉक बनाएँ?

एचडीएफएस में फ़ाइल में प्रवेश करने के लिए कॉन्जेरेंसी के साथ कैसे जुड़ा हुआ है? क्या डाटलॉस का खतरा है?

क्या एचडीएफएस तीसरे ब्लॉक को बनाता है इसमें 20 + 2 एमबी लगाया जाता है, और 2 एमबी के साथ ब्लॉक को हटा देता है। यदि हां, यह एक साथ काम कैसे करता है?

उत्तर

3

-Jira issuementioned before में latest design document, हम आपके सवाल का जवाब मिल निम्नलिखित अनुसार:

  1. HDFS अंतिम ब्लॉक करने के लिए संलग्न कर देगा, नहीं एक नए ब्लॉक बना सकते हैं और से डेटा कॉपी पुराना आखिरी ब्लॉक यह मुश्किल नहीं है क्योंकि एचडीएफएस सामान्य ब्लॉक के रूप में इन ब्लॉक-फाइलों को लिखने के लिए एक सामान्य फाइल सिस्टम का उपयोग करता है। सामान्य फ़ाइल सिस्टम में नए डेटा को जोड़ने के लिए तंत्र होते हैं। बेशक, यदि आप अंतिम ब्लॉक भरते हैं, तो आप एक नया ब्लॉक बनायेंगे।
  2. एचडीएफएस में एक ही समय में किसी एक फ़ाइल को लिखने या संलग्न करने की अनुमति है, इसलिए संभाल करने के लिए कोई सहमति नहीं है। यह namenode द्वारा प्रबंधित किया जाता है। यदि आप किसी और को लिखना शुरू करना चाहते हैं तो आपको एक फ़ाइल बंद करने की आवश्यकता है।
  3. यदि फ़ाइल में अंतिम ब्लॉक दोहराया नहीं गया है, तो परिशिष्ट विफल हो जाएगा। परिशिष्ट एक प्रतिकृति को लिखा जाता है, जो इसे सामान्य लिखने के समान प्रतिकृतियों में पाइपलाइन करता है। ऐसा लगता है कि सामान्य लिखने की तुलना में डाटलॉस का कोई अतिरिक्त जोखिम नहीं है।
+0

क्या आप एक बंद फ़ाइल में शामिल हो सकते हैं? – David

+0

अगर आप फ़ाइल पर संलग्न करते हैं तो आप इसे खोल रहे हैं। आप एक खुली फ़ाइल पर संलग्न नहीं कर सकते हैं। फिर एक बार जब आप संलग्न करते हैं और आउटपुट स्ट्रीम प्राप्त करते हैं तो आप फ़ाइल के अंत में अपने बाइट्स को डंप करना शुरू कर सकते हैं। – EthanP

+0

यदि इस सुविधा को पेश किया गया था, तो मुझे सही ढंग से याद है, तो आपको इसे "संलग्न" करने में सक्षम होने के लिए खोला गया एक नई बनाई गई फ़ाइल छोड़नी होगी (उर्फ वास्तविक परिशिष्ट नहीं)। क्या आप कह रहे हैं कि अब एचडीएफएस 1) फाइल बनाने की अनुमति देता है 2) इसे बंद करें 3) इसे फिर से खोलें 4) इसमें डेटा संलग्न करें? – David

1

हैडोप वितरित फ़ाइल सिस्टम फ़ाइलों को जोड़ता है, और इस मामले में इसे आपके उदाहरण में दूसरे ब्लॉक में 20 एमबी जोड़ना चाहिए (शुरुआत में 2 एमबी वाला वाला)। इस तरह आप दो ब्लॉक के साथ खत्म हो जाएंगे, एक 128 एमबी और 22 एमबी के साथ एक होगा।

This एचडीएफएस के लिए जावा दस्तावेज़ों को जोड़ने का संदर्भ है।

+4

मैं समझता हूं कि पथ वही रहता है। लेकिन चूंकि ब्लॉक लिखते हैं-एक बार, मुझे लगता है कि एचडीएफएस तीसरे ब्लॉक को 20 + 2 एमबी रखेगा, और ब्लॉक को 2 एमबी के साथ हटा देगा। लेकिन यह एक साथ काम कैसे करता है? – David

3

यहां एक बहुत व्यापक design document संलग्न करने के बारे में है और इसमें समवर्ती समस्याएं हैं।

वर्तमान HDFS docs उस दस्तावेज़ को एक लिंक देता है, इसलिए हम मान सकते हैं कि यह हालिया है। (दस्तावेज़ दिनांक 200 9 है)

और संबंधित issue

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