2011-06-10 5 views
5

ऐसा लगता है कि यह सरल होना चाहिए; मेरे पास क्लस्टर-डिफ़ॉल्ट ब्लॉक आकार 128 एमबी के साथ हमारे क्लस्टर पर फ़ाइलों का एक सेट है। मेरे पास एक स्ट्रीमिंग जॉब है जो उन्हें संसाधित करती है, और मैं स्ट्रीमिंग नौकरी द्वारा बनाई गई आउटपुट फाइलों को एक अलग ब्लॉक आकार, विशेष रूप से 16 एमबी का उपयोग करने के लिए चाहता हूं। मैंने सोचा था कि निम्नलिखित काम करेगा:मैं हाडोप स्ट्रीमिंग नौकरी द्वारा उत्पादित आउटपुट फ़ाइलों के ब्लॉक आकार को कैसे सेट कर सकता हूं?

$ HADOOP_HOME/bin/Hadoop जार $ HADOOP_HOME/योगदान/स्ट्रीमिंग/Hadoop-0.20.1 + 152 streaming.jar डी dfs.block.size = 16777216 डी mapred .job.name = 'लॉग प्रोसेसर' -D mapred.reduce.tasks = 5 -D mapred.output.compress = true -D mapred.output.compression.type = ब्लॉक-इनपुट/उत्पादन/बीकन/vbox */20110609/00/access_log आउटपुट/उपयोगकर्ता/मुझे/logprocess/20,110,609/00/access_log -mapper/bin/बिल्ली org.apache.hadoop.mapred.SequenceFileOutputFormat

कोई प्यार -outputformat, फ़ाइलों में उत्पादित/उपयोगकर्ता/मुझे/logprocess/20110609/00/access_log सभी 128 एमबी के क्लस्टर के लिए डिफ़ॉल्ट ब्लॉक आकार का उपयोग करते हैं। मैंने dfs.block.size को fs.local.block.size के साथ कमांड में भी उसी परिणाम के साथ बदलने की कोशिश की है। किसी भी विचार स्ट्रीमिंग नौकरी में इसे कैसे नियंत्रित करें?

उत्तर

-1

यह एक "सटीक" ब्लॉक आकार नहीं होगा, लेकिन आप क्या कर सकते हैं # reducers सेट किया गया है। यह कैसे काम करता है कि प्रत्येक reducer एक फ़ाइल outputs, तो अगर आपको पता है कि आपकी OUTPUT फ़ाइल 128 एमबी है (इनपुट अप्रासंगिक है) और आप चाहते थे कि आपकी प्रत्येक आउटपुट फाइल प्रत्येक 16K से अधिक न हो, तो आप 8 reducers (128/16) असाइन कर सकते हैं। नोट: फ़ाइलों की संभावना लगभग 16K प्रत्येक होगी, और इस बात की कोई गारंटी नहीं है कि सभी फ़ाइलें < 16K होगी।

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