2011-06-15 12 views

उत्तर

4

ब्लॉक और फ़ाइलों को हैश मैप में संग्रहीत किया जाता है। तो आप Integer.MAX_VALUE से बाध्य हैं। इसलिए निर्देशिका में कोई सीमा नहीं है, लेकिन संपूर्ण फ़ाइल सिस्टम है।

+0

लेकिन, फ्रेमवर्क वास्तव में एस/डब्ल्यू और एच/डब्ल्यू बाधाओं के कारण उस संख्या तक स्केल नहीं कर सकता है। –

6

http://blog.cloudera.com/blog/2009/02/the-small-files-problem/ से:

हर फ़ाइल, निर्देशिका और HDFS में ब्लॉक namenode की स्मृति में एक वस्तु, जिनमें से प्रत्येक 150 बाइट्स पर अंगूठे का एक नियम के रूप में के रूप में प्रतिनिधित्व किया है। तो 10 मिलियन फाइलें, प्रत्येक ब्लॉक का उपयोग करते हुए, लगभग 3 गीगाबाइट मेमोरी का उपयोग करेंगे। इस स्तर से काफी ऊपर स्केलिंग वर्तमान हार्डवेयर के साथ एक समस्या है। निश्चित रूप से एक बिलियन फाइल संभव नहीं है।

1

यह प्रश्न विशेष रूप से एचडीएफएस का उल्लेख करता है, लेकिन एक संबंधित सवाल यह है कि आप हडोप क्लस्टर पर कितनी फाइलें स्टोर कर सकते हैं।

यदि आप MapR की फ़ाइल सिस्टम का उपयोग करते हैं तो इसका एक अलग उत्तर है। उस स्थिति में, बिना किसी समस्या के क्लस्टर पर अरबों फाइलें संग्रहीत की जा सकती हैं।

8

आधुनिक अपाचे हैडोप संस्करणों में, विभिन्न एचडीएफएस सीमाएं नाम में fs-limits के साथ कॉन्फ़िगरेशन गुणों द्वारा नियंत्रित होती हैं, जिनमें सभी के पास डिफ़ॉल्ट डिफ़ॉल्ट मान होते हैं। इस सवाल ने विशेष रूप से निर्देशिका में बच्चों की संख्या के बारे में पूछा। यह dfs.namenode.fs-limits.max-directory-items द्वारा परिभाषित किया गया है, और इसका डिफ़ॉल्ट मान 1048576 है।

fs-limits कॉन्फ़िगरेशन गुणों और उनके डिफ़ॉल्ट मानों की पूरी सूची के लिए hdfs-default.xml में अपाचे हैडोप दस्तावेज़ देखें। सुविधा के लिए यहां कॉपी-पेस्टिंग:

<property> 
    <name>dfs.namenode.fs-limits.max-component-length</name> 
    <value>255</value> 
    <description>Defines the maximum number of bytes in UTF-8 encoding in each 
     component of a path. A value of 0 will disable the check.</description> 
</property> 

<property> 
    <name>dfs.namenode.fs-limits.max-directory-items</name> 
    <value>1048576</value> 
    <description>Defines the maximum number of items that a directory may 
     contain. Cannot set the property to a value less than 1 or more than 
     6400000.</description> 
</property> 

<property> 
    <name>dfs.namenode.fs-limits.min-block-size</name> 
    <value>1048576</value> 
    <description>Minimum block size in bytes, enforced by the Namenode at create 
     time. This prevents the accidental creation of files with tiny block 
     sizes (and thus many blocks), which can degrade 
     performance.</description> 
</property> 

<property> 
    <name>dfs.namenode.fs-limits.max-blocks-per-file</name> 
    <value>1048576</value> 
    <description>Maximum number of blocks per file, enforced by the Namenode on 
     write. This prevents the creation of extremely large files which can 
     degrade performance.</description> 
</property> 

<property> 
    <name>dfs.namenode.fs-limits.max-xattrs-per-inode</name> 
    <value>32</value> 
    <description> 
    Maximum number of extended attributes per inode. 
    </description> 
</property> 

<property> 
    <name>dfs.namenode.fs-limits.max-xattr-size</name> 
    <value>16384</value> 
    <description> 
    The maximum combined size of the name and value of an extended attribute 
    in bytes. It should be larger than 0, and less than or equal to maximum 
    size hard limit which is 32768. 
    </description> 
</property> 

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

+0

आपके विस्तृत और स्पष्ट उत्तर के लिए धन्यवाद –