2013-04-01 4 views
7

Я встречаюсь с некоторыми проблемами, когда я использую maven для исправления hadoop из исходного кода. Вот ошибка, может ли кто-нибудь мне помочь? Благодарю.org.apache.maven.plugin.MojoExecutionException: protoc failure

[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

Код ??????????? –

+0

Извините, я новый парень. Я пытаюсь превратить его в формат кода, но он провалился. – huang

+0

Зачем вам нужно собирать Hadoop из источника? – TC1

ответ

11

инструкции на http://wiki.apache.org/hadoop/HowToContribute объяснить некоторые из менее очевидных аспектов построения Hadoop - в том числе это. Основная проблема заключается в том, что буферные буферы требуются инфраструктурой YARN от hadoop, и вы, скорее всего, не устанавливаете их.

Похоже, что проблема может быть, что вы не interpretting ошибки правильно, а значит -

Как Изолировать ошибку сборки

Любой харизмы которая не должно быть связанно с классом.

В этом случае, харизмы, что не удается здесь:

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

Глядя на код, его ясно, что это Mojo требует программа «protoc» для запуска.

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

Решение

Чтобы построить Hadoop, вам нужно буферов протокола. Это можно установить на машине * NIX из исходного кода, выполнив следующие команды, чтобы захватить код из кода google (взято из 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

Обновление: для ствол теперь требуется protobuf 2.5: 'wget http: // protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz' – cabad

+1

Как вы скомпилируете это в окнах? –

+1

@Sambit Tripathy: Чтобы получить это для Windows, перейдите на страницу https://developers.google.com/protocol-buffers/docs/downloads и получите двоичный файл Windows. Вы просто добавляете путь к protoc.exe в свою среду PATH, и он будет установлен! Для инсталляционного пакета Hadoop для Eclipse, который я получил с сайта Apache Nutch, требуется версия 2.5.0, поэтому получите только один, и вы все настроены! – kajarigd

Смежные вопросы