2013-04-01 18 views
7

Mam pewne problemy, gdy używam maven do spełnienia hadoop z kodu źródłowego. Oto błąd, czy ktoś może mi pomóc? Dzięki.org.apache.maven.plugin.MojoExecutionException: niepowodzenie protokołu

[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAPSHOT:protoc (compile-protoc) on project hadoop-c 
[Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:3.0.0-SNAP 
plugin.MojoExecutionException: protoc failure 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
     at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
     at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
     at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
     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.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
     at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.apache.maven.plugin.MojoExecutionException: org.apache.maven.plugin.MojoExecutionException: protoc failure 
     at org.apache.hadoop.maven.plugin.protoc.ProtocMojo.execute(ProtocMojo.java:81) 
     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
     ... 19 more 
**Caused by: org.apache.maven.plugin.MojoExecutionException: protoc failure** 
     at org.apache.hadoop.maven.plugin.protoc.ProtocMojo.execute(ProtocMojo.java:78) 
     ... 21 more 
[ERROR] 
[ERROR] 
+0

Kod ??????????? –

+0

Przepraszam, jestem nowym facetem. Próbuję włączyć to do formatu kodu, ale to się nie udało. – huang

+0

Dlaczego musisz skompilować Hadoop ze źródła? – TC1

Odpowiedz

11

Instrukcje w http://wiki.apache.org/hadoop/HowToContribute wyjaśnić niektóre z mniej oczywistych aspektów Hadoop budynku - w tym ten jeden. Głównym problemem jest to, że bufory protokołów są wymagane przez framework YARN hadoop i najprawdopodobniej nie masz ich zainstalowanych.

Wydaje się, że problemem może być to, że nie interpretting błąd prawidłowo, tak -

Jak Izolowanie błąd kompilacji

Wszelkie mojo która nie powinna być związana z klasą.

W tym przypadku, mojo, że nie udaje się tutaj:

https://svn.apache.org/repos/asf/hadoop/common/trunk/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/protoc/ProtocMojo.java

Patrząc na kod, jego jasne, że Mojo wymaga program „protoc”, aby uruchomić.

http://code.google.com/p/protobuf/

Rozwiązanie

Aby zbudować Hadoop, trzeba bufory protokołem. Można go zainstalować na komputerze * NIX ze źródła, uruchamiając następujące polecenia, aby pobrać kod z kodu googlecode (pobranego z http://numbers.brighterplanet.com/2012/04/14/how-to-install-mosh-on-amazon-ec2/).

wget http://protobuf.googlecode.com/files/protobuf-2.4.1.tar.gz 
tar xzf protobuf-2.4.1.tar.gz 
cd protobuf-2.4.1 
./configure 
make 
sudo make install 
sudo ldconfig 
+3

Aktualizacja: trunk teraz wymaga protobuf 2.5: 'wget http: // protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz' – cabad

+1

Jak to skompilować w oknach? –

+1

@ Sambit Tripathy: Aby uzyskać tę informację dla systemu Windows, przejdź na stronę https://developers.google.com/protocol-buffers/docs/downloads i pobierz plik binarny systemu Windows. Po prostu dodajesz ścieżkę do pliku protoc.exe w zmiennej środowiskowej PATH, która zostanie zainstalowana! W przypadku pakietu instalacyjnego Hadoop for Eclipse, który dostałem z witryny Apache Nutch, potrzebna jest wersja 2.5.0, więc zdobądź tylko jedną i wszystko gotowe! – kajarigd