2010-12-06 2 views
5

में एकाधिक मैपराइडस नौकरियां चला रहा है, मैं मानचित्र की एक श्रृंखला को नौकरी कम करना चाहता हूं, इसलिए सबसे आसान समाधान जॉब कंट्रोलर लगता है। कहो मेरे पास दो नौकरियां हैं, जॉब 1 और जॉब 2। और मैं जॉब 1 के बाद जॉब 2 चलाने के लिए चाहता हूं। खैर, यह कुछ समस्याओं का सामना करना पड़ा।हडूप

JobConf jobConf1 = new JobConf(); 
JobConf jobConf2 = new JobConf(); 
System.out.println("*** Point 1"); 
Job job1 = new Job(jobConf1); 
System.out.println("*** Point 2"); 
Job job2 = new Job(jobConf2); 
System.out.println("*** Point 3"); 

मैं जब कोड चलाने इस उत्पादन प्राप्त करते रहने के:

*** Point 1  
10/12/06 17:19:30 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId= 
*** Point 2  
10/12/06 17:19:30 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized 
*** Point 3 

क्या मुझे लगता है कि मेरी समस्या किसी भी तरह से संबंधित है "डीबगिंग के घंटे के बाद, मैं इन पंक्तियों के लिए कोड को संकुचित होता जेएमवी शुरू नहीं कर सकता .... "लाइन। वो क्या है? और मैं जॉबकंट्रोलर को पास करने के लिए, एक से अधिक नौकरी को तुरंत कैसे चालू कर सकता हूं।

10/12/07 11:28:21 INFO jvm.JvmMetrics: Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized 
Exception in thread "main" org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: file:/home/workspace/WikipediaSearch/__TEMP1 
     at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:224) 
     at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:241) 
     at org.apache.hadoop.mapred.JobClient.writeNewSplits(JobClient.java:885) 
     at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:779) 
     at org.apache.hadoop.mapreduce.Job.submit(Job.java:432) 
     at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:447) 
     at ch.ethz.nis.query.HadoopQuery.run(HadoopQuery.java:353) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 
     at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79) 
     at ch.ethz.nis.query.HadoopQuery.main(HadoopQuery.java:308) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:156) 

__Temp1 पहली नौकरी के उत्पादन फ़ोल्डर है, जो मैं के लिए इनपुट होना चाहते हैं:

जब मैं दूसरे काम आरंभ करने से पहले job1.waitForTheCompletion (सही) जोड़ा, यह मेरे इस त्रुटि दे दी है दूसरा एक। और भले ही मेरे पास यह कोड है मेरे कोड में पूर्ण प्रक्रिया, यह अभी भी शिकायत कर रहा है कि यह पथ मौजूद नहीं है।

उत्तर

5

वाह, दो दिनों के डिबगिंग के बाद, यह पता चला है कि समस्या हैडूप आंतरिक निर्देशिका नाम नियम के साथ है। जाहिर है, इनपुट या आउटपुट मानचित्र-निर्देशिकाओं को कम करने के लिए, कोई "_" रेखांकन से शुरू होने वाले नामों का चयन नहीं कर सकता है। वह मूर्ख! और चेतावनियां और त्रुटि बिल्कुल मदद नहीं थी।

+0

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

0

क्या यह संभव है कि आप नौकरी नहीं बना सकते हैं जबकि कोई दूसरा समाप्त नहीं हुआ है? मैं हैडऑप 0.20.2 का उपयोग करता हूं (ध्यान दें कि जॉबकॉन्फ़ को बहिष्कृत किया गया है। हैडऑप का दावा है कि पीछे की संगतता का समर्थन करने का दावा है, लेकिन मेरे अनुभव में, यह वास्तव में नहीं है) और मैंने मूल रूप से वही काम किया है और कभी भी यह समस्या नहीं थी। यदि आप जॉब 2 बनने से पहले जॉब 1.waitForCompletion (true) जोड़ते हैं तो क्या आपको अभी भी समस्या है?

+0

हाय, हां वास्तव में, मैंने इस परिदृश्य सहित सभी परिदृश्यों का परीक्षण किया है: (int i = 0; i <2; i ++) {नौकरी नौकरी = नई नौकरी (getConf(), "पुनरावृत्ति"); InitializeTheJob; job.wait.waitForCompletion (सही); } और फिर भी मैं वही चेतावनी प्राप्त करता रहता हूं। और फिर कुछ नया हुआ। मैंने मुख्य प्रश्न पोस्ट अपडेट किया है ताकि आप समस्या देख सकें। – narengi