Mappa Riduci i jar del client per 2.4.1 hadoop in eclipse

Quando hadoop mapreduce word count jar mio hadoop mapreduce word count jar nella cartella hadoop nella shell, funziona correttamente e l’output è generato correttamente,

Dal momento che utilizzo il yarn in caso di hadoop 2.4.1 , quando hadoop 2.4.1 da Eclipse per il MapReduce Sample program , il processo MAP è stato completato e non è riuscito a ridurre il processo.

È chiaro che il problema è con la configurazione jar.

Si prega di trovare i barattoli, ho aggiunto …

inserisci la descrizione dell'immagine qui

Questo è l’errore che ho ottenuto

INFO: riduce l’esecutore di compiti completato. 21 nov 2014 8:50:35 PM org.apache.hadoop.mapred.LocalJobRunner $ Esecuzione lavoro AVVISO: job_local1638918104_0001 java.lang.Exception: java.lang.NoSuchMethodError: org.apache.hadoop.mapred.ReduceTask.setLocalMapFiles (Ljava / util / Map;) V su org.apache.hadoop.mapred.LocalJobRunner $ Job.runTasks (LocalJobRunner.java:462) su org.apache.hadoop.mapred.LocalJobRunner $ Job.run (LocalJobRunner.java:529) Causato da: java.lang.NoSuchMethodError: org.apache.hadoop.mapred.ReduceTask.setLocalMapFiles (Ljava / util / Map;) V su org.apache.hadoop.mapred.LocalJobRunner $ Job $ ReduceTaskRunnable.run (LocalJobRunner.java:309 ) su java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:471) su java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:334) su java.util.concurrent.FutureTask.run ( FutureTask.java:166) su java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1145) su java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:615) su java.lang.Thread.run (Thread.java:722 )

Eccezione nella discussione “Thread-12” java.lang.NoClassDefFoundError: org / apache / commons / httpclient / HttpMethod su org.apache.hadoop.mapred.LocalJobRunner $ Job.run (LocalJobRunner.java:562) Causato da: java.lang .ClassNotFoundException: org.apache.commons.httpclient.HttpMethod su java.net.URLClassLoader $ 1.run (URLClassLoader.java:366) su java.net.URLClassLoader $ 1.run (URLClassLoader.java:355) su java.security.AccessController .doPrivileged (Native Method) su java.net.URLClassLoader.findClass (URLClassLoader.java:354) su java.lang.ClassLoader.loadClass (ClassLoader.java:423) su sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java : 308) su java.lang.ClassLoader.loadClass (ClassLoader.java:356) … altro 1

Come per lo screenshot, stai aggiungendo manualmente tutti i jar dipendenti al classpath. Si consiglia vivamente di utilizzare Maven per questo, che automatizzerà il processo di aggiunta di jar dipendenti al classpath. Abbiamo solo bisogno di aggiungere i principali barattoli dipendenti.
Ho usato le seguenti dipendenze in pom.xml che mi ha aiutato a correre senza problemi ..

  2.5.2    org.apache.hadoop hadoop-hdfs ${hadoop.version}   org.apache.hadoop hadoop-common ${hadoop.version}   org.apache.hadoop hadoop-client ${hadoop.version}   org.apache.hadoop hadoop-mapreduce-client-core ${hadoop.version}   org.apache.hadoop hadoop-yarn-api ${hadoop.version}   org.apache.hadoop hadoop-yarn-common ${hadoop.version}   org.apache.hadoop hadoop-auth ${hadoop.version}   org.apache.hadoop hadoop-yarn-server-nodemanager ${hadoop.version}   org.apache.hadoop hadoop-yarn-server-resourcemanager ${hadoop.version}   

vieni al tuo problema, ho controllato nel classpath, ci sono esattamente 82 file jar disponibili.
Sarà un lavoro noioso trovare ogni barattolo come questo.
Puoi aggiungere i vasi sapienti funzionali QUI .
Un’altra soluzione alternativa sarebbe, aggiungere tutti i file jar nel percorso della directory hadoop installato come /share/hadoop/ e aggiungere tutti i jar da tutta la cartella lib. qual è la cosa migliore che puoi fare .. o
Aggiungi solo giare avro specifici, perché eccezione generata dalla class avro secondo lo screenshot. Questo potrebbe risolvere il problema di avro jars. ma potresti affrontare altri problemi di dipendenza. Ho anche affrontato lo stesso problema mentre lavoravo con Hadoop V1. Quindi più tardi ho realizzato e utilizzato Maven con Hadoop V2. Quindi non preoccuparti dei barattoli dipendenti.
Il tuo focus sarà sulle esigenze di Hadoop e Business. 🙂
Spero che ti aiuti ..