2013-05-05 6 views
5

पर थ्रूपुट मापें मैं प्रत्येक पढ़ने/लिखने के संचालन के लिए किए गए समय को मापकर प्रत्येक डेटानोड पर थ्रूपुट मापना चाहता हूं। लाखों कार्यों के माध्यम से पढ़ना और यह पता लगाना बहुत मुश्किल है कि यह कहां हो रहा है। क्या कोई डेटा के ब्लॉक को पढ़ने/लिखते समय किए गए कॉल की श्रृंखला सूचीबद्ध कर सकता है? संस्करण 1.0.1 का उपयोग कर रहा हूँ। वैकल्पिक रूप से, यदि पहले से ही एक एपीआई है जो डाटानोड पर इसका समाधान करती है तो मैं उस जानकारी का उपयोग कर सकता हूं।डाटानोड

+1

अपनी बाउंटी टिप्पणी के संबंध में: यदि आप नोड को ब्लैकलिस्ट करते हैं, तो यह अब क्लस्टर में भाग नहीं लेगा, और इसलिए थ्रूपुट कभी भी ठीक नहीं होगा। – likeitlikeit

+0

हे बग कैचर, नीचे मेरे उत्तर पर कोई विचार? – Engineiro

+0

@likeitlikeit मैंने दिल की धड़कन के लिए मौजूदा नीति की तर्ज पर कुछ किया: इसे तीन मौके दें और यदि यह अभी भी खराब है तो इसे ब्लैकलिस्ट करें। व्यावहारिक उपयोग के लिए इरादा नहीं है –

उत्तर

1

लिखने के लिए थ्रूपुट मापने के लिए अध्ययन करने के लिए महत्वपूर्ण कक्षाएं FSDataOutputStream लिखने के लिए और FSDataInputStream पढ़ने के लिए हैं।

फ़ाइल पढ़ें: पहली बात यह है कि एक नोड जब एक फ़ाइल को पढ़ने FileSystem वस्तु पर कॉल open() है। इस बिंदु पर, आप जानते हैं कि यह नोड जल्द ही पढ़ना शुरू कर देगा और आप इस माप के बाद सफलतापूर्वक अपने माप के लिए तैयार होने के बाद कोड डाल सकते हैं। एचडीएफएस पर open() को कॉल करना DistributedFileSystem को तत्काल करता है जो ब्लॉक स्थानों को एकत्र करने के लिए नाम नोड के साथ संचार करता है (कॉलिंग नोड निकटता के अनुसार क्रमबद्ध)। अंत में, DistributedFileSystem ऑब्जेक्ट FSDataInputStream (फ़ाइल को पढ़ने "देखता है) देता है जो बदले में DFSInputStream (" पढ़ने वाले ब्लॉक "देखता है, विफलता संभालता है)। read() और close()FSDataInputStream पर कॉल के साथ आपके माप को स्कॉप्ड किया जाएगा।

फ़ाइल लिखें: नोड पर create() पर कॉल करेगा। इस बिंदु पर विभिन्न चेक किए गए हैं जिनमें फ़ाइल अनुमतियां, उपलब्धता इत्यादि शामिल हैं, लेकिन सफल समापन पर यह FSDataOutputStream ऑब्जेक्ट देता है जो DFSOutputStream को लपेटता है। वही अवधारणा लागू होती है जहां कोई निरंतर लिखता है, दूसरा प्रतिकृति कारक (यानी एक लिखना = तीन लिखता है) और विफलता की समेकन को संभालता है। इसी प्रकार पढ़ने के लिए, FSDataInputStream पर write() और close() कॉल के भीतर आपके माप को स्कॉप्ड किया जाएगा।

अपने क्लस्टर में सभी नोड्स के लिए वैश्विक स्तर पर ऐसा करने के लिए, आपको अपने क्लस्टर में साझा किए गए हडोप के वितरण के हिस्से के रूप में इन तरीकों को ओवरराइड करना होगा।

+0

प्रत्येक डेटा नोड के आंकड़ों को कुल करने के तरीके को समझाता नहीं है। क्लाइंट नोड्स से अलग-अलग डेटा नोड्स को प्रोफ़ाइल करने और नोड नाम पर जानकारी भेजने की उम्मीद नहीं की जा सकती है। वैसे भी, क्योंकि मेरी ज़रूरत बीत चुकी है, मैं इस जवाब को स्वीकार करूंगा –