पर थ्रूपुट मापें मैं प्रत्येक पढ़ने/लिखने के संचालन के लिए किए गए समय को मापकर प्रत्येक डेटानोड पर थ्रूपुट मापना चाहता हूं। लाखों कार्यों के माध्यम से पढ़ना और यह पता लगाना बहुत मुश्किल है कि यह कहां हो रहा है। क्या कोई डेटा के ब्लॉक को पढ़ने/लिखते समय किए गए कॉल की श्रृंखला सूचीबद्ध कर सकता है? संस्करण 1.0.1 का उपयोग कर रहा हूँ। वैकल्पिक रूप से, यदि पहले से ही एक एपीआई है जो डाटानोड पर इसका समाधान करती है तो मैं उस जानकारी का उपयोग कर सकता हूं।डाटानोड
डाटानोड
उत्तर
लिखने के लिए थ्रूपुट मापने के लिए अध्ययन करने के लिए महत्वपूर्ण कक्षाएं FSDataOutputStream
लिखने के लिए और FSDataInputStream
पढ़ने के लिए हैं।
फ़ाइल पढ़ें: पहली बात यह है कि एक नोड जब एक फ़ाइल को पढ़ने FileSystem
वस्तु पर कॉल open()
है। इस बिंदु पर, आप जानते हैं कि यह नोड जल्द ही पढ़ना शुरू कर देगा और आप इस माप के बाद सफलतापूर्वक अपने माप के लिए तैयार होने के बाद कोड डाल सकते हैं। एचडीएफएस पर open()
को कॉल करना DistributedFileSystem
को तत्काल करता है जो ब्लॉक स्थानों को एकत्र करने के लिए नाम नोड के साथ संचार करता है (कॉलिंग नोड निकटता के अनुसार क्रमबद्ध)। अंत में, DistributedFileSystem
ऑब्जेक्ट FSDataInputStream
(फ़ाइल को पढ़ने "देखता है) देता है जो बदले में DFSInputStream
(" पढ़ने वाले ब्लॉक "देखता है, विफलता संभालता है)। read()
और close()
FSDataInputStream
पर कॉल के साथ आपके माप को स्कॉप्ड किया जाएगा।
फ़ाइल लिखें: नोड पर create()
पर कॉल करेगा। इस बिंदु पर विभिन्न चेक किए गए हैं जिनमें फ़ाइल अनुमतियां, उपलब्धता इत्यादि शामिल हैं, लेकिन सफल समापन पर यह FSDataOutputStream
ऑब्जेक्ट देता है जो DFSOutputStream
को लपेटता है। वही अवधारणा लागू होती है जहां कोई निरंतर लिखता है, दूसरा प्रतिकृति कारक (यानी एक लिखना = तीन लिखता है) और विफलता की समेकन को संभालता है। इसी प्रकार पढ़ने के लिए, FSDataInputStream
पर write()
और close()
कॉल के भीतर आपके माप को स्कॉप्ड किया जाएगा।
अपने क्लस्टर में सभी नोड्स के लिए वैश्विक स्तर पर ऐसा करने के लिए, आपको अपने क्लस्टर में साझा किए गए हडोप के वितरण के हिस्से के रूप में इन तरीकों को ओवरराइड करना होगा।
प्रत्येक डेटा नोड के आंकड़ों को कुल करने के तरीके को समझाता नहीं है। क्लाइंट नोड्स से अलग-अलग डेटा नोड्स को प्रोफ़ाइल करने और नोड नाम पर जानकारी भेजने की उम्मीद नहीं की जा सकती है। वैसे भी, क्योंकि मेरी ज़रूरत बीत चुकी है, मैं इस जवाब को स्वीकार करूंगा –
अपनी बाउंटी टिप्पणी के संबंध में: यदि आप नोड को ब्लैकलिस्ट करते हैं, तो यह अब क्लस्टर में भाग नहीं लेगा, और इसलिए थ्रूपुट कभी भी ठीक नहीं होगा। – likeitlikeit
हे बग कैचर, नीचे मेरे उत्तर पर कोई विचार? – Engineiro
@likeitlikeit मैंने दिल की धड़कन के लिए मौजूदा नीति की तर्ज पर कुछ किया: इसे तीन मौके दें और यदि यह अभी भी खराब है तो इसे ब्लैकलिस्ट करें। व्यावहारिक उपयोग के लिए इरादा नहीं है –