2013-01-03 13 views
9

Hadoop MapReduce कार्यक्रमों में से अधिकांश इस तरह हैं:क्या है Hadoop कार्यक्रमों में कॉन्फ़िगर वर्ग के उपयोग

public class MyApp extends Configured Implements Tool { 
    @Override 
    public int run(String[] args) throws Exception { 
     Job job = new Job(getConf()); 
     /* process command line options */ 
     return job.waitForCompletion(true) ? 0 : 1; 
    } 
    public static void main(String[] args) throws Exception { 
     int exitCode = ToolRunner.run(new MyApp(), args); 
     System.exit(exitCode); 
    } 
} 

Configured के उपयोग क्या है? Tool और Configured दोनों में getConf() और setConf() समान हैं। यह हमारे आवेदन को क्या प्रदान करता है?

उत्तर

9

ConfiguredConfigurable का कार्यान्वयन वर्ग है। Configured आधार वर्ग है जिसमें getConf() और setConf() के कार्यान्वयन हैं।

केवल इस बेस क्लास को विस्तारित करने से कक्षा को सक्षम बनाता है जो इसे Configuration का उपयोग करके कॉन्फ़िगर किया जा सकता है और Configuration के लिए एक से अधिक कार्यान्वयन हैं।

अपने कोड निम्न पंक्ति को निष्पादित करता है,

ToolRunner.run(new MyApp(), args); 

आंतरिक यह ऊपर मामले में यह

ToolRunner.run(tool.getConf(), tool, args); 

करेंगे toolMyApp वर्ग उदाहरण Tool के एक कार्यान्वयन है जो है जो बस के रूप में आपने कहा है getConf() है लेकिन यह एक इंटरफेस के रूप में है। कार्यान्वयन Configured बेस क्लास से आ रहा है। यदि आप उपरोक्त कोड में Configured कक्षा को विस्तारित करने से बचते हैं, तो आपको getConf() और setConf() कार्यान्वयन करना होगा।

3

ConfiguredConfigurable इंटरफ़ेस का एक डिफ़ॉल्ट कार्यान्वयन है - मूल रूप से अपने setConf विधि से पारित कर दिया Configuration वस्तु के लिए एक निजी उदाहरण चर और getConf() रिटर्न संदर्भ

ToolConfigurable इंटरफ़ेस का एक विस्तार है बरकरार रखती है, एक अतिरिक्त run(..) प्रदान विधि और कमांड लाइन विकल्पों को पार्स करने के लिए ToolRunner के साथ प्रयोग किया जाता है (GenericOptionsParser का उपयोग करके) और Configuration ऑब्जेक्ट बनाएं जिसे बाद में setConf(..) विधि पर पास किया गया हो।

आपकी मुख्य कक्षा आम तौर पर कॉन्फ़िगर की गई है जैसे टूल में आवश्यक कॉन्फ़िगर करने योग्य इंटरफ़ेस विधियां आपके लिए लागू की जाएंगी।

सामान्य रूप से आपको टूलरुनर यूटिलिटी क्लास का उपयोग अपनी मैपरेडस नौकरियों को लॉन्च करने के लिए करना चाहिए क्योंकि यह कमांड लाइन तर्कों को पार्स करने और कॉन्फ़िगरेशन ऑब्जेक्ट का निर्माण करने के सामान्य कार्य को संभालता है। मैं अधिक जानकारी के लिए ToolRunner के लिए एपीआई डॉक्स देखता हूं।