2010-12-06 18 views
5

Bir harita zinciri çalıştırmak istiyorum işleri azaltmak, böylece en kolay çözüm iş denetleyicisi gibi görünüyor. Benim iki işim var, iş1 ve iş2. ve işten sonra işi2 çalıştırmak istiyorum. Eh, bazı problemlerle karşı karşıya. Ben kodu çalıştırırken bu çıktıyı almaya devamhadoop'ta birden fazla MapReduce iş yürütüyor

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 

Ne sanırım benim sorunum için bir türlü ilişkili olmasıdır "hata ayıklama saat sonra, ben bu hatlara kodunu daralmış JMV başlatılamıyor .... "satırı. O nedir? Ve onları JobController'a iletmek için birden fazla işi nasıl oluşturabilirim.

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 ilk işi çıktı klasörü, ben için giriş olmak istiyorum: Ben ikinci bir iş başlatılırken önce (true) job1.waitForTheCompletion eklendiğinde

, bana bu hatayı verdi ikinci olan. Ve kodumda bu waitForCompletion satırına sahip olmamasına rağmen, hala bu yolun mevcut olmadığından şikayet ediyor.

cevap

5

Wowww, iki günlük hata ayıklamasından sonra, sorunun hadoop iç dizin adları kuralıyla olduğu ortaya çıkıyor. Görünüşe göre, giriş veya çıkışlı harita azaltma dizinleri için "_" alt çizgisiyle başlayan adlar seçilemez. Bu aptal! Ve uyarılar ve hata hiçbir şekilde yardımcı olmadı.

+0

Hadoop belgeleri kesinlikle mükemmel olandan daha azdır. Unutmayın ki, beni hiç unutmamak gerekir ki, InputSplit'in alt sınıflarının Yazılabilir'i uygulamak zorunda olduğunu öğrenmem gerekiyordu. Bunu bir yere InputSplit belgelerinde anlatacaklarını düşünürdünüz. Ben hâlâ, ilk önce bir kavanoz haline getirmeden başarılı bir şekilde bir dolandırıcılık işi yürütmeyi başaramadım. – dspyz

0

Başka biri bitmemişken bir iş oluşturamaz mısın? Hadoop 0.20.2 kullanıyorum (JobConf'un kullanımdan kaldırıldığına dikkat edin. Hadoop geriye dönük uyumluluğu destekliyor ama benim deneyimlerimde, gerçekten değil) ve temelde aynı şeyi yaptım ve bu problemi hiç yapmadım. Job2 oluşturulmadan önce job1.waitForCompletion (true) eklerseniz hala sorun yaşıyorsunuz?

+0

Merhaba, Evet Aslında, aşağıdakileri de dahil olmak üzere tüm senaryoları test ettim: for (int i = 0; i <2; i ++) {Job job = new Job (getConf(), "iteration"); InitializeTheJob; job.wait.waitForCompletion (doğru); Ve hala aynı uyarıyı almaya devam ediyorum. ve sonra yeni bir şey oldu. Sorunu görebilmeniz için ana soru yayınını güncelledim. – narengi

İlgili konular